ListView优化-DAdapter和DViewHolder
DAdapter
package com.example.hjsx826_filedemo; import java.util.HashMap; import java.util.List; import java.util.Map; import android.content.Context; import android.util.SparseArray; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; public abstract class DAdapter<T> extends BaseAdapter{ private Map<Integer, Boolean> map=new HashMap<Integer, Boolean>();//记录CheckBox的状态 private List<T> dataList;//数据 Context context; public Map<Integer, Boolean> getMap() { return map; } public DAdapter(Context context) { super(); this.context = context; } public List<T> getDataList() { return dataList; } public void setDataList(List<T> dataList) { this.dataList = dataList; if(null!=getDataList()){ map.clear(); for(int i=0;i<getDataList().size();i++) { map.put(i, false); } } } public Context getContext() { return context; } @Override public int getCount() { if(null!=dataList){ return dataList.size(); } return 0; } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public abstract View getView(int position, View convertView, ViewGroup parent); }
DViewHolder
package com.example.hjsx826_filedemo; import android.util.SparseArray; import android.view.View; public class DViewHolder { @SuppressWarnings("unchecked") 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; } }