java - 创建自定义微调器时如何实现 getView

标签 java android adapter android-spinner

我想要自定义微调器,在下拉列表中包含图像和 TextView ,因此我创建了不同的布局并对其进行了膨胀,其工作正常,但对于按微调器之前的微调器布局,我只想有一个类似“选择”的文本来自列表”但是当我用

膨胀时

android.R.layout.simple_spinner_item

对于 getView,我只得到一个下拉箭头而不是文本

如何在 getView 中填充布局,我是否必须创建新的数据集?与下拉菜单不同?这是我的代码:我正在为自定义适配器实现 SpinnerAdapter

 @Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {

    convertView = inflater.inflate(R.layout.spinner_item, parent, false);
    ImageView iv = (ImageView) convertView.findViewById(R.id.iv);
    TextView tv = (TextView) convertView.findViewById(R.id.tv1);

    iv.setImageResource(R.drawable.flower);
    tv.setText(itemList[position]);

    return convertView;

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = inflater.inflate(android.R.layout.simple_spinner_item, 
                                  parent, false);

   return convertView;
}

最佳答案

在旋转适配器中声明 ViewHolder 类

private static class ViewHolder{
        TextView tv_itemname;
}

并修改您的 getView() 方法,如下所示:

    public View getView(final int position, View convertView, ViewGroup parent) {

        View vi = convertView;
        SpinnerListAdapter.ViewHolder holder;

        if(convertView==null){
            vi = inflater.inflate(R.layout.spinner_item_row, null);
            holder = new SpinnerListAdapter.ViewHolder();
            holder.tv_itemname = (TextView) vi.findViewById(R.id.tv_itemname);
            vi.setTag( holder );
        }
        else
        {
            holder = (SpinnerListAdapter.ViewHolder) vi.getTag();
        }


        if (position == 0)
        {
            holder.tv_itemname.setText("Choose one of the following category");
        }else{
            holder.tv_itemname.setText(itemList[position]);
        }

        return vi;
    }

关于java - 创建自定义微调器时如何实现 getView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45185534/

相关文章:

android - 将 sqlite 数据库复制到 android 设备失败

java - 显示 BottomSheetDialog 时隐藏 StatusBar

c++ - 一个 C++ 迭代器适配器,它包装和隐藏内部迭代器并转换迭代类型

android - setOnItemClickListener 不响应自定义 ListView

java - 使用 Java 中的 Selenium Webdriver 以不同用户身份运行 IE

java - 音频输入流 : any way keep track of number of bytes read from source stream?

java - Maven 2.2.1 存储库顺序似乎是任意的

java - 如何为项目列表设置默认值?

java - 从返回 NULL 的 firebase 检索数据

design-patterns - 策略模式和适配器的区别