Android BaseAdapter介绍和优化
来源:互联网 发布:mysql弹出错误信息 编辑:程序博客网 时间:2024/05/09 10:19
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","中南海"};@Overrideprotected 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; } }}
1 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优化
- HOWTO: Be more productive
- MFC从多个EDIT中读取和保存文件
- 浅谈Java中的static
- vi替换操作
- 不为人知的秘密
- Android BaseAdapter介绍和优化
- 缺页中断处理
- Net导出TXT文本
- emmintrin.h文件解析
- PHP的ob_start()函数用法
- jsp页面 标签中出现的错误Syntax error on token "language", VariableDeclaratorId expected after this token
- CentOS下用yum配置php+mysql+apache
- textarea输入框光标定位问题
- OS X下开发!ios系统贪食蛇!——from cocos2d-x 3.0