Android-----ListView
一个不可忽视的控件,几乎和互联网和用户有关的,都会涉及到ListView,今天介绍一个高效的ListView写法,并介绍ListViewAdapter五步法
在Activity中,ListView的写法前篇一律
第一步:加载数据 List<String> data = new ArrayList<String>(); for(int i=0;i<=30;i++){ data.add("aaa"+i); }
第二步:加载ListView ListView listview = (ListView)this.findViewById(R.id.listView1);
第三步:加载Adapter ListViewAdapter listViewAdapter = new ListViewAdapter(this,data); listView.setAdapter(listViewAdapter);
完事
重头戏,ListViewAdapter的写法
第四步:ViewHolder //利用泛型加载控件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>(); view.setTag(viewHolder); } View childView = viewHolder.get(id); if (childView == null) { childView = view.findViewById(id); viewHolder.put(id, childView); } return (T)childView; }
第五步:getView //判断是否新建视图对象 if(convertView == null){ convertView = LayoutInflater.from(this.context).inflate(R.layout.list_item, null); Log.e("Adapter", "新建行号:"+String.valueOf(position)); } //加载控件 TextView textView = ViewHolder.get(convertView,R.id.editText1); //操作控件 textView.setText(data.get(position)); //返回视图 return convertView;
本文中用了SparseArray来存储视图,SparseArray是android里为<Interger,Object>这样的Hashmap而专门写的class,目的是提高效率
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。