您的位置:首页 > 其它

12,对ListView的适配器的封装BaseListAdapter

2017-03-05 14:20 387 查看

实现的思路

1,BaseAdapter 的分析
1,构造方法
需要传递一个泛型的集合,并使用之成员化
使用泛型,要在类名中声明该泛型

2,getCount
对集合进行非空判断,并返回mData.size()
3,getItem
对集合进行非空判断,并返回mData.get(position);
4,getItemId
直接返回position
5,getView
view方面:
onCreateViewHolder(position);
view+data方面:
onBindViewHolder(viewHolder,position);
6,ViewHolder的定义
只需要在构造方法,将传递的视图成员化


实现的代码

package com.example.guixin.oschina.base;

import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;

import java.util.List;

/**
* Author:      归零
* Date:        2017/3/5 2:06
* Email:       4994766@qq.com
* Description:
*/
public abstract class BaseListAdapter<ITEMBEAN> extends BaseAdapter {

private List<ITEMBEAN> mData;

public BaseListAdapter(List<ITEMBEAN> data) {
mData = data;
}

@Override
public int getCount() {
return mData == null ? 0 : mData.size();
}

@Override
public Object getItem(int position) {
return mData == null ? null : mData.get(position);
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
viewHolder = onCreateViewHolder(position);
viewHolder.mView.setTag(viewHolder);
}else {
viewHolder = (ViewHolder) convertView.getTag();
}

onBindViewHolder(viewHolder,position);
return viewHolder.mView;
}

/**
* 决定视图与数据的绑定
* 在基类中不知道onBindViewHolder的具体实现
* 交给子类:必须实现
* @param viewHolder
* @param position
*/
protected abstract void onBindViewHolder(ViewHolder viewHolder, int position);

/**
* 决定绑定的视图
* 在基类中不知道onCreateViewHolder的具体实现
* 交给子类:必须实现
* @param position
* @return
*/
protected abstract ViewHolder onCreateViewHolder(int position) ;

public class   ViewHolder{
public View mView;
public ViewHolder(View view) {
mView = view;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: