亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

簡單的實現ListView

標簽:
Android

现在RecyclerView已经代替LisvView,但是个别时候我们还会用到,使用封装好的简单暴力!

listView的优化我就不说了,谷歌百度一大片,把封装好的ViewHolder和Adapter直接展示给大家

1.把Adapter封装成抽象类:

/** * 封装的adapter(泛型) 抽象类 * Created by cmh on 2018/1/8. */public abstract class DAdapter<T> extends BaseAdapter {    private Context context;    private List<T> datalist;    public DAdapter(Context context) {        this.context = context;
    }    //可以调用context    public Context getContext() {        return context;
    }    public List<T> getDatalist() {        return datalist;
    }    public void setDatalist(List<T> datalist) {        this.datalist = datalist;
    }    @Override    public int getCount() {        if (datalist!=null){            return datalist.size();
        }        return 0;
    }    @Override    public Object getItem(int position) {        return position;
    }    @Override    public long getItemId(int position) {        return position;
    }    //抽象方法    @Override    public abstract View getView(int position, View convertView, ViewGroup parent);
}

2.Adapter extends DAdapter<实体类>

/** * 继承封装好的adapter * Created by cmh on 2018/1/8. */public class FMyAdapter extends DAdapter<Hore>{    public FMyAdapter(Context context) {        super(context);
    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        if (null==convertView){
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.plist_item,null);
        }        //viewHolder获取控件绑定convertView        ImageView imageView = DViewHolder.get(convertView,R.id.img);
        TextView textView = DViewHolder.get(convertView,R.id.tv);
        Hore hore = getDatalist().get(position);        //展示数据        imageView.setImageResource(hore.getResId());
        textView.setText(hore.getName());        return convertView;
    }
}

3.封装ViewHolder(直接使用)

/** * 封装的viewholder * Created by cmh on 2018/1/8. */public class DViewHolder {    public static <T extends View> T get(View view,int id){
        SparseArray<View> viewHolder = (SparseArray<View>) view.getTag();        if (viewHolder==null){
            viewHolder = new SparseArray<>();
            view.setTag(viewHolder);
        }
        View childView = viewHolder.get(id);        if (childView==null){
            childView = view.findViewById(id);
            viewHolder.put(id,childView);
        }        return (T) childView;
    }
}

原文链接:http://www.apkbus.com/blog-784586-76841.html

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消