封装BaseAdapter (笔记)

/**
 * 共有的Adapter
 *
 */
public abstract class CommonAdapter<T> extends BaseAdapter {

    Context mContext;
    List<T> mDataList;

    public CommonAdapter(Context context, List<T> dataList){
        this.mContext = context;
        this.mDataList = dataList;
    }

    public Context getContext() {
        return mContext;
    }

    public List<T> getDataList() {
        return mDataList;
    }

    /**
     * 添加数据源
     * @param mDataList
     */
    public void addDataList(List<T> mDataList){
        this.mDataList.addAll(mDataList);
        notifyDataSetChanged();
    }

    /**
     * 清除数据
     */
    public void clear(){
        this.mDataList.clear();
    }

    @Override
    public int getCount() {
        return mDataList.size();
    }

    @Override
    public Object getItem(int position) {
        return mDataList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        convertView = convertView(position, convertView);
        return convertView;
    }

    /**
     * 重写convertView方法
     *
     * @param position
     * @param convertView
     * @return
     */
    public abstract View convertView(int position, View convertView);

}
/**
 * ApkInfo Adapter
 *
 */
public class FileInfoAdapter extends CommonAdapter<FileInfo> {

    /**
     * 文件类型的标识
     */
    private int mType = FileInfo.TYPE_APK;

    public FileInfoAdapter(Context context, List<FileInfo> dataList) {
        super(context, dataList);
    }

    public FileInfoAdapter(Context context, List<FileInfo> dataList, int type) {
        super(context, dataList);
        this.mType = type;
    }

    @Override
    public View convertView(int position, View convertView) {
        FileInfo fileInfo = getDataList().get(position);

        if(mType == FileInfo.TYPE_APK){ //APK convertView
            ApkViewHolder viewHolder = null;
            if(convertView == null){
                convertView = View.inflate(getContext(), R.layout.item_apk, null);
                viewHolder = new ApkViewHolder();
                viewHolder.iv_shortcut = (ImageView) convertView.findViewById(R.id.iv_shortcut);
                viewHolder.iv_ok_tick = (ImageView) convertView.findViewById(R.id.iv_ok_tick);
                viewHolder.tv_name = (TextView) convertView.findViewById(R.id.tv_name);
                viewHolder.tv_size = (TextView) convertView.findViewById(R.id.tv_size);
                convertView.setTag(viewHolder);
            }else{
                viewHolder = (ApkViewHolder) convertView.getTag();
            }

            if(getDataList() != null && getDataList().get(position) != null){

                viewHolder.iv_shortcut.setImageBitmap(fileInfo.getBitmap());
                viewHolder.tv_name.setText(fileInfo.getName() == null ? "" : fileInfo.getName());
                viewHolder.tv_size.setText(fileInfo.getSizeDesc() == null ? "" : fileInfo.getSizeDesc());

                //全局变量是否存在FileInfo
                if(AppContext.getAppContext().isExist(fileInfo)){
                    viewHolder.iv_ok_tick.setVisibility(View.VISIBLE);
                }else{
                    viewHolder.iv_ok_tick.setVisibility(View.GONE);
                }
            }
        }

        return convertView;
    }

    static class ApkViewHolder {
        ImageView iv_shortcut;
        ImageView iv_ok_tick;
        TextView tv_name;
        TextView tv_size;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值