Android BaseAdapter介绍和优化
来源:互联网 发布:淘宝无线店铺网址 编辑:程序博客网 时间:2024/05/20 14:18
Android BaseAdapter介绍和优化
BaseAdapterandroid开发
ListView是Android中使用最频繁的控件之一,Android对ListView做了特殊的优化。如果数据量很大的时候,这种优化将非常重要,能够顺滑滚动,提高用户体验。
首先我们使用BaseAdapter创建我们自定义的adapter,复写方法,其中的getview方法尤其很重要。
优化包括使用以下两个部分:
1.复用convertView
2.使用ViewHolder
具体的代码实现:
- public class MainActivity extends Activity {
- private List<Map<String,Object>> listItems;
- private ListView listView;
- String[] header={"姓名","性别","电话","住址"};
- String[] content={"张三","男","18850201111","中南海"};
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- listItems=new ArrayList<Map<String,Object>>();
- listItems=getListItems();//获取数据
- listView=(ListView) findViewById(R.id.listview);
- MyBaseAdapter adapter=new MyBaseAdapter(this);
- listView.setAdapter(adapter);
- }
- /************************获取listitem的数据********************************/
- private List<Map<String, Object>> getListItems()
- {
- List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
- Map<String, Object> map;
- for(int i=0;i<header.length;i++)
- {
- map = new HashMap<String, Object>();
- map.put("header", header[i]);
- map.put("content", content[i]);
- list.add(map);
- }
- return list;
- }
- /***************创建一个静态的ViewHolder,用来保存listItem里的控件****************************/
- static class ViewHolder
- {
- public TextView title;
- public TextView info;
- }
- public class MyBaseAdapter extends BaseAdapter {
- private LayoutInflater inflater;
- //private List<Map<String, Object>> data;
- /**************构造方法获取上下文********************************/
- private MyBaseAdapter(Context context){
- this.inflater=LayoutInflater.from(context);
- }
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return listItems.size();
- }
- @Override
- public Object getItem(int position) {
- // TODO Auto-generated method stub
- return listItems.get(position);
- }
- @Override
- public long getItemId(int position) {
- // TODO Auto-generated method stub
- return position;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // TODO Auto-generated method stub
- ViewHolder holder=null;
- if(convertView==null){
- holder=new ViewHolder();//如果缓存view不存在,则创建一个新的ViewHolder
- convertView=inflater.inflate(R.layout.task_item, null);
- holder.title=(TextView) convertView.findViewById(R.id.nameheader);
- holder.info=(TextView) convertView.findViewById(R.id.content);
- convertView.setTag(holder);
- }
- else
- holder=(ViewHolder) convertView.getTag();
- /*********以下设置控件显示内容***********/
- holder.title.setText((String) listItems.get(position).get("header"));
- holder.info.setText((String) listItems.get(position).get("content"));
- return convertView;
- }
- }
0 0
- Android BaseAdapter介绍和优化
- Android BaseAdapter介绍和优化
- Android BaseAdapter 和ListAdapter的介绍
- BaseAdapter 运用和优化
- Android------------BaseAdapter示例介绍
- Android杂谈--ListView之BaseAdapter的使用和优化
- Android-ListView适配器BaseAdapter的使用和优化
- Android——数据适配器 BaseAdapter的使用和优化
- android BaseAdapter(修改优化)
- Android ListView使用BaseAdapter 优化
- Android学习笔记---BaseAdapter优化
- android-BaseAdapter和getView
- 【Android学习笔记系列】BaseAdapter适配器的介绍、使用及优化(详细)
- Android BaseAdapter和ViewHolder 优化 解决ListView的item抢焦点问题和item错乱问题
- Android BaseAdapter使用及listview优化
- Android中的BaseAdapter的使用极其优化
- android baseadapter使用与优化 博客链接
- android复习路之BaseAdapter优化
- hdu 2072 截取字符操作
- 两台电脑间的svn迁移
- hdu 5187 zhx's contest(快速幂矩阵6)
- DataTable查询
- vb(2) picturebox、hscrollbar、vscrollbar实现滚动浏览
- Android BaseAdapter介绍和优化
- 建造者模式
- springmvc学习笔记(8)——使用Servlet原生API作为参数
- 用MKL库vRngUniform函数产生uniform随机数的fortran模块
- 2440的Nand启动
- startActivityForResult 用在于多个Activity之间传值时一些需要注意的用法
- 排列的递归实现
- 日拱一卒(五十一)
- 不带css的版本