listview适配器Baseadapter
来源:互联网 发布:java arraylist源码 编辑:程序博客网 时间:2024/06/05 09:51
总结listview适配器Baseadapter
先吐槽一下自己,真真个可怕呀,说要学会listview结果半个月了,才….
Baseadapter基本介绍
- listview需要把数据和视图结合在一起,Baseadapter便于重写
- 为了有效的利用到视图convertview的视图缓存机制,减少频繁调用findViewById,使用ViewHolder绑定数据而使用到setTag方法
- 重写方法:getCount(列表中多少行),getItem(位置上的对象),getItemId(位置行号),getView(每行的内容)
基本步骤:
设置布局–设置适配器–设置数据源–加载适配器
- tips:列表控件封装到Itemtips类里面,构造函数
- viewholder static类,适配器绑定数据源,根据上下文加载布局
- getView的写法:添加viewhoder、判断convertview是否空:是,LayoutInflater绑定Item视图,holder添加控件id,setTag;不是空,获取缓存标签getTag、返回convertview
具体代码:
封装Item控件
public class ItemTip { public int ItemtipID; public String Itemtitle; public ItemTip(int itemtipID, String itemtitle) { Itemtitle = itemtitle; ItemtipID = itemtipID; }}
MainActivity
public class MainActivity extends AppCompatActivity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView= (ListView) findViewById(R.id.lv); //创建适配器 //创建数据源getdata(),加载适配器 List<ItemTip>data=new ArrayList<>(); for(int i=0;i<20;i++){ data.add(new ItemTip(R.mipmap.ic_launcher,"this is"+i+"item")); } MyAdapter adapter=new MyAdapter(this,data); //视图加载适配器 listView.setAdapter(adapter); }}
MyAdapter
public class MyAdapter extends BaseAdapter { private Context context; private LayoutInflater inflater=null; private List<ItemTip>mlist; public MyAdapter(Context context,List<ItemTip>list) { //添加构造函数,绑定数据源 mlist=list; this.inflater=LayoutInflater.from(context);//根据上下文加载布局 } @Override public int getCount() { return mlist.size(); } @Override public Object getItem(int i) { return mlist.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View convertView, ViewGroup viewGroup) { ViewHolder holder; if(convertView==null){ holder=new ViewHolder(); convertView=inflater.inflate(R.layout.item,null); holder.title= (TextView) convertView.findViewById(R.id.tv); holder.picture= (ImageView) convertView.findViewById(R.id.iv); convertView.setTag(holder); }else{ holder= (ViewHolder) convertView.getTag();// } ItemTip tip=mlist.get(i); holder.picture.setImageResource(tip.ItemtipID); holder.title.setText(tip.Itemtitle); return convertView; } static class ViewHolder{ ImageView picture; TextView title; }}
效果图
遗留问题:hashmap里的键值对,可否都用模板类代替
阅读全文
0 0
- BaseAdapter 作为 ListView 适配器
- ListView适配器BaseAdapter
- ListView 适配器BaseAdapter配置
- ListView适配器BaseAdapter
- 自定义ListView ,适配器(BaseAdapter)
- listview适配器Baseadapter
- 自定义ListView适配器继承BaseAdapter
- android listview的适配器------baseadapter
- ListView的优化 +BaseAdapter适配器
- listView适配器之BaseAdapter详解
- ListView的适配器BaseAdapter使用详解
- Android学习ListView自定义布局,适配器BaseAdapter
- 关于ListView使用BaseAdapter和SimpleAdapter适配器
- Android组件ListView的适配器BaseAdapter
- ListView (3) 之适配器 ArrayAdapter/SimpleAdapter/BaseAdapter
- ListView适配器之增强版BaseAdapter
- BaseAdapter自定义适配器及ListView的优化
- ListView控件:(3)BaseAdapter适配器生成
- 解决win7 64位操作系统下安装PL/SQL后连接报错问题: make sure you have the 32 bits oracle client installed
- unicode与GB2312转换等Delphi函数
- 【FastDFS】搭建一台结构简单的FastDFS图片服务器
- 2017最新webstorm,idea,phpstorm破解方法
- 向Shader中传递数据
- listview适配器Baseadapter
- spring Boot入门
- Java面试题全集
- 读取properties文件
- android recycleview实现两列不滑动(nestscrollview嵌套)
- 强烈推荐--理解矩阵(孟岩)
- ios代码设置圆角
- VIM配置
- 取数组前几个