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;  
    }  
}

 

posted @ 2016-09-05 22:17  快乐的小狼  阅读(304)  评论(0编辑  收藏  举报