Как установить только флаг страны на Spinner

Я реализую счетчик с названием страны и флагом, используя адаптер массива. Но когда я выбираю элемент, он устанавливает оба значения на счетчике, то есть имя и флаг, но я хочу, чтобы только флаг на счетчике выглядел как Как установить только флаг страны на Spinner

попробуйте это stackoverflow.com/questions/24422236/…

Gursewak Singh 21.07.2018 11:12

Вы уже написали код? Или просто это изображение?

Ridcully 22.07.2018 10:36
1
2
842
2

Ответы 2

Как описано в принятый ответ вопроса, на который ссылается @GursewakSingh, вам необходимо создать кастомный адаптер и реализовать getView() и getDropdownView(), чтобы возвращать разные представления.

В вашем случае вам нужно, чтобы getView() возвращал представление, которое показывает только изображение флага, а getDropdownView() возвращало представление, которое показывает флаг и название страны.

В представлении счетчика будет использоваться getView() для отображения обычного представления счетчика и getDropdownView() для отображения элементов раскрывающегося списка.

спасибо за ответ, но не могли бы вы дать мне пример кода, я хочу отображать только изображение на счетчике

user7789678 21.07.2018 11:40

Используйте это, надеюсь, он отлично работает

// array of data icons from source
   private static Integer[] imageIcons = { R.drawable.a, R.drawable.b, 
 R.drawable.c };

 // call adapter from main class
    SimpleImageArrayAdapter adapter = new SimpleImageArrayAdapter(context, imageIcons );
spinner.setAdapter(adapter);

// adapter class 
  public class SimpleImageArrayAdapter extends ArrayAdapter<Integer> {
    private Integer[] images;

    SimpleImageArrayAdapter(Context context, Integer[] images) {
        super(context, android.R.layout.simple_spinner_item, images);
        this.images = images;
    }

    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent) {
        return getImageForPosition(position);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return getImageForPosition(position);
    }

    private View getImageForPosition(int position) {
        ImageView imageView = new ImageView(getContext());
        imageView.setBackgroundResource(images[position]);
        imageView.setLayoutParams(new AbsListView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        return imageView;
    }
}

}

У меня есть 2 списка, один для имени и один для флага страны

user7789678 21.07.2018 12:50

выполните ту же процедуру, используя строковый массив с названием страны. используйте другой адаптер

Jigangsu 22.07.2018 10:55

Другие вопросы по теме