Откуда значение и почему такое (spinner)?

Рейтинг: 2Ответов: 1Опубликовано: 03.03.2015

Пишу кастомный адаптер для спинера.

Кусок кода, вроде все, как всегда:

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 ...

Заранее спасибо!

Ответы

▲ 2Принят

Разобрался. Надо было переопределить метод

public View getDropDownView()

Тело метода аналогичное что и у

public View getView()