Android 如何为适配器选择最佳构造函数?

Android 如何为适配器选择最佳构造函数?,android,android-arrayadapter,Android,Android Arrayadapter,正在研究数组适配器和fonud online,在扩展ArrayAdapter的适配器类中创建构造的不同方法。我很困惑,但我的研究让我感到困惑 看完之后,我的模棱两可并没有消除。因此,我的问题是,如果我有: 两个文本视图和一个图像视图 布局中使用的两个ImageView和一个TextView 我建议你去看看。它清晰且易于实现。当您开始在几个示例中使用它时,您会喜欢它。我将给出一个示例适配器,它是implementbaseadapter。它还包括视图保持架模式,以提高性能 public class

正在研究数组适配器和fonud online,在扩展ArrayAdapter的适配器类中创建构造的不同方法。我很困惑,但我的研究让我感到困惑

看完之后,我的模棱两可并没有消除。因此,我的问题是,如果我有:

  • 两个文本视图和一个图像视图
  • 布局中使用的两个ImageView和一个TextView

  • 我建议你去看看。它清晰且易于实现。当您开始在几个示例中使用它时,您会喜欢它。我将给出一个示例适配器,它是implementbaseadapter。它还包括视图保持架模式,以提高性能

    public class CustomListViewAdapter extends BaseAdapter {
    
        private Context context;
        private List<Object> objectList;
    
        public CustomListViewAdapter(Context context, List<Object> objectList) {
            this.context = context;
            this.objectList = objectList;
        }
    
        @Override
        public int getCount() {
            return objectList.size();
        }
    
        @Override
        public Object getItem(int position) {
            return objectList.get(position);
        }
    
        @Override
        public long getItemId(int position) {
            return 0;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder;
            Object object = getItem(position);
            if (convertView == null) {
                convertView = LayoutInflater.from(context).inflate(R.layout.custom_list_row, null);
    
                holder = new ViewHolder();
                holder.textProperty = convertView.findViewById(R.id.text_property);
                holder.imageProperty = convertView.findViewById(R.id.image_property);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
    
            holder.textProperty.setText(object.getDisplayName());
            holder.imageProperty.setBackgroundResource(object.checkForSomething() ? R.mipmap.first_image:R.mipmap.second_image);
            return convertView;
        }
    
        static class ViewHolder{
            private TextView textProperty;
            private ImageView imageProperty;
    
        }
    } 
    
    公共类CustomListViewAdapter扩展了BaseAdapter{
    私人语境;
    私有列表对象列表;
    公共CustomListViewAdapter(上下文上下文,列表对象列表){
    this.context=上下文;
    this.objectList=objectList;
    }
    @凌驾
    public int getCount(){
    返回objectList.size();
    }
    @凌驾
    公共对象getItem(int位置){
    返回objectList.get(位置);
    }
    @凌驾
    公共长getItemId(int位置){
    返回0;
    }
    @凌驾
    公共视图getView(int位置、视图转换视图、视图组父视图){
    视窗座;
    对象=获取项目(位置);
    if(convertView==null){
    convertView=LayoutFlater.from(上下文)。充气(R.layout.custom\u list\u行,空);
    holder=新的ViewHolder();
    holder.textProperty=convertView.findViewById(R.id.text\u属性);
    holder.imageProperty=convertView.findViewById(R.id.image\u属性);
    convertView.setTag(支架);
    }否则{
    holder=(ViewHolder)convertView.getTag();
    }
    holder.textProperty.setText(object.getDisplayName());
    holder.imageProperty.setBackgroundResource(object.checkForSomething()?R.mipmap.first\u image:R.mipmap.second\u image);
    返回视图;
    }
    静态类视窗夹{
    私有文本视图文本属性;
    私有ImageView imageProperty;
    }
    } 
    
    实际上,您从未使用过这些。相反,我们实现自定义适配器以满足我们的需要更好地学习自定义适配器。如果你需要的话,那么你将能够做得更好。