【No8.】ViewHolder的再次简化、优化写法 Cool!

来源:互联网 发布:linux 装载磁盘 编辑:程序博客网 时间:2024/05/17 06:19
package com.example.simpleviewholder;import android.util.SparseArray;import android.view.View;/** * Viewholder的简化 *  * @ClassName: ViewHolder * @Description: TODO * @author Simon * @date 2014-8-22 上午9:56:29 */@SuppressWarnings("unchecked")public class 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;}}

以上是ViewHolder的优化写法、可以直接作为一个工具类放到Utils包里面;


对于SparseArray类的介绍我就不多说了大家直接看吧:http://blog.csdn.net/kaixinbingju/article/details/8658428



下面是用法:

public class MyAdapter extends BaseAdapter {private LayoutInflater mInflater;private List<String> list;MyAdapter(Context mContext,List<String> list) {mInflater = LayoutInflater.from(mContext);this.list = list;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list != null ? list.size() : 0;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn list.get(position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubif (convertView == null) {Log.i("Simon", "convertView == null" + (convertView == null));convertView = mInflater.inflate(R.layout.item, parent, false);}TextView mTextView = ViewHolder.get(convertView, R.id.textView1);mTextView.setText(list.get(position).trim());return convertView;}}


是不是瞬间感觉自己的代码 高大上 了~




0 0
原创粉丝点击