zoukankan      html  css  js  c++  java
  • 02-14Android学习进度报告十四

            今天我学习了关于构建一个可复用的自定义BaseAdapter的知识。

    首先将Entity设置成泛型

    代码示例:

    public class MyAdapter<T> extends BaseAdapter {
    
        private Context mContext;
        private LinkedList<T> mData;
    
        public MyAdapter() {
        }
    
        public MyAdapter(LinkedList<T> mData, Context mContext) {
            this.mData = mData;
            this.mContext = mContext;
        }
    
        @Override
        public int getCount() {
            return mData.size();
        }
    
        @Override
        public Object getItem(int position) {
            return null;
        }
    
        @Override
        public long getItemId(int position) {
            return position;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder = null;
            if (convertView == null) {
                convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list, parent, false);
                holder = new ViewHolder();
                holder.img_icon = (ImageView) convertView.findViewById(R.id.img_icon);
                holder.txt_content = (TextView) convertView.findViewById(R.id.txt_content);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
            holder.img_icon.setImageResource(mData.get(position).getImgId());
            holder.txt_content.setText(mData.get(position).getContent());
            return convertView;
        }
    
        //添加一个元素
        public void add(T data) {
            if (mData == null) {
                mData = new LinkedList<>();
            }
            mData.add(data);
            notifyDataSetChanged();
        }
    
        //往特定位置,添加一个元素
        public void add(int position,T data){
            if (mData == null) {
                mData = new LinkedList<>();
            }
            mData.add(position, data);
            notifyDataSetChanged();
        }
    
        public void remove(T data) {
            if(mData != null) {
                mData.remove(data);
            }
            notifyDataSetChanged();
        }
    
        public void remove(int position) {
            if(mData != null) {
                mData.remove(position);
            }
            notifyDataSetChanged();
        }
    
        public void clear() {
            if(mData != null) {
                mData.clear();
            }
            notifyDataSetChanged();
        }
    
        private class ViewHolder {
            ImageView img_icon;
            TextView txt_content;
        }
    
    }

    然后是将ViewHolder类进行升级改造

    代码示例如下:

    public static class ViewHolder {
    
        private SparseArray<View> mViews;   //存储ListView 的 item中的View
        private View item;                  //存放convertView
        private int position;               //游标
        private Context context;            //Context上下文
    
        //构造方法,完成相关初始化
        private ViewHolder(Context context, ViewGroup parent, int layoutRes) {
            mViews = new SparseArray<>();
            this.context = context;
            View convertView = LayoutInflater.from(context).inflate(layoutRes, parent,false);
            convertView.setTag(this);
            item = convertView;
        }
    
        ImageView img_icon;
        TextView txt_content;
    }

    这就是今日所学。

  • 相关阅读:
    leetcode 190 Reverse Bits
    vs2010 单文档MFC 通过加载位图文件作为客户区背景
    leetcode 198 House Robber
    记忆化搜索(DP+DFS) URAL 1183 Brackets Sequence
    逆序数2 HDOJ 1394 Minimum Inversion Number
    矩阵连乘积 ZOJ 1276 Optimal Array Multiplication Sequence
    递推DP URAL 1586 Threeprime Numbers
    递推DP URAL 1167 Bicolored Horses
    递推DP URAL 1017 Staircases
    01背包 URAL 1073 Square Country
  • 原文地址:https://www.cnblogs.com/yang2000/p/12323586.html
Copyright © 2011-2022 走看看