Откуда значение и почему такое (spinner)?
Пишу кастомный адаптер для спинера.
Кусок кода, вроде все, как всегда:
public class Region {
private String regionCode;
private String regionName;
public Region(String regionCode, String regionName){
this.regionCode = regionCode;
this.regionName = regionName;
}
public String getRegionCode(){
return regionCode;
}
public String getRegionName(){
return regionName;
}
}
private final ArrayList<Region> regionList = new ArrayList<Region>();
private void fillCitiesListArray(){
// Сибирь
regionList.add(new Region("19", "Абакан"));
regionList.add(new Region("22", "Барнаул"));
regionList.add(new Region("42", "Кемерово"));
regionList.add(new Region("24", "Красноярск"));
regionList.add(new Region("17", "Кызыл"));
regionList.add(new Region("142", "Новокузнецк"));
regionList.add(new Region("54", "Новосибирск"));
regionList.add(new Region("55", "Омск"));
regionList.add(new Region("70", "Томск"));
}
class MyCityListAdapter extends ArrayAdapter<Region> {
public MyCityListAdapter() {
super(ActivityChooseCategory.this, R.layout.spinner_cityrow, regionList);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View spinnerView = convertView;
if (spinnerView == null) {
spinnerView = getLayoutInflater().inflate(R.layout.spinner_cityrow, parent, false);
}
Region currentRegion = regionList.get(position);
TextView regionName = (TextView) spinnerView.findViewById(R.id.city);
regionName.setText(currentRegion.getRegionName());
return spinnerView;
}
}
Но вот почему-то в списке спинера, где должны появляться названия городов (поля TextView regionName) записываются строки вида:
packagename.Region@4299b1f0
packagename.Region@4299b2c8
...
Проверяю через слушатель - тот же currentRegion.getRegionName()
возвращает корректное имя города...
Почему же тогда в процессе формирования списка в него пишутся эти непонятные строки? И как это поправить?
Грешу на spinner_cityrow.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/city"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="18dp"
android:layout_marginStart="18dp"
android:typeface="sans"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#333333"
android:singleLine="true"
android:gravity="center_vertical"
android:paddingLeft="18dp"
/>
Потому что до setText ему, в currentRegion.getRegionName()
корректное название...
Может, это потому что уже 04:30 ...
Заранее спасибо!
Источник: Stack Overflow на русском