如何在微调框上设置仅国家标志

时间:2018-07-21 09:06:13

标签: android

我使用Array Adapter实现带有国家名称和标志的微调器。但是当我选择该项目时,它在微调器上设置了两个值,即名称和标志,但是我只想在微调器上设置标志看起来像 enter image description here

2 个答案:

答案 0 :(得分:1)

如问题accepted answer中所述,@ GursewakSingh指的是,您需要创建一个自定义适配器,并实现getView()getDropdownView()以返回不同的观点。

对于您的情况,您将希望getView()返回仅显示国旗图像的视图,而getDropdownView()返回仅显示国旗和国家名称的视图。

微调器视图将使用getView()显示微调器的常规视图,并使用getDropdownView()呈现下拉列表的项目。

答案 1 :(得分:1)

希望使用它可以正常工作

// 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;
    }
}

}