美文网首页
Adapter 模板

Adapter 模板

作者: 小狮子365 | 来源:发表于2018-12-20 10:51 被阅读4次

    要求所有的Adapter都继承自BaseAdapter,从构造函数注入List<自定义实体>这样的数据集合,从而完成ListView的填充工作,如下所示:

    public class TemplateAdapter extends BaseAdapter {
    
        private Context context = null;
        private List<Entity> entityList= null;
    
        public TemplateAdapter(Context context, List<Entity> entityList) {
            this.context = context;
            this.entityList= entityList;
        }
    
        @Override
        public int getCount() {
            return entityList.size();
        }
    
        @Override
        public Object getItem(int position) {
            return entityList.get(position);
        }
    
        @Override
        public long getItemId(int position) {
            return position;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup viewGroup) {
            ViewHolder viewHolder = null;
            if (convertView== null) {
                convertView= LayoutInflater.from(context).inflate(R.layout.item_user_info, null);
                viewHolder = new ViewHolder();
                viewHolder.tvEmail= (TextView) convertView.findViewById(R.id.tv_email);
                convertView.setTag(viewHolder);
            } else {
                viewHolder = (ViewHolder) convertView.getTag();
            }
            Entity entity = entityList.get(position);
            viewHolder.tvEmail.setText(entity.getEmail());
            return convertView;
        }
    
        static class ViewHolder {
            TextView tvEmail;
        }
    }
    

    对于每个自定义的Adapter,都要实现以下4个方法:

    getCount();
    getItem();
    getItemId();
    getView();
    

    此外,还要内置一个Holder嵌套类,用于存放ListView中每一行中的控件。ViewHolder的存在,可以避免频繁创建同一个列表项,从而极大地节省内存。

    相关文章

      网友评论

          本文标题:Adapter 模板

          本文链接:https://www.haomeiwen.com/subject/pevuattx.html