android通用适配器,Android列表通用适配器Java版

适用ListView和GridView

public abstract class BaseListAdapter extends BaseAdapter{

private List list;

private int mLayoutRes; //布局id

public BaseListAdapter(List list, int mLayoutRes) {

this.list = list;

this.mLayoutRes = mLayoutRes;

}

@Override

public int getCount() {

return list != null ? list.size() : 0;

}

@Override

public T getItem(int position) {

return list.get(position);

}

@Override

public long getItemId(int position) {

return position;

}

@Override

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

ViewHolder holder = ViewHolder.bind(parent.getContext(), convertView, parent, mLayoutRes, position);

bindView(holder, getItem(position));

return holder.getItemView();

}

public abstract void bindView(ViewHolder holder, T obj);

//添加一条数据

public void add(T t) {

if (list == null) {

list = new ArrayList();

}

list.add(t);

notifyDataSetChanged();

}

//在指定位置添加一条数据

public void add(int position,T t) {

if (list == null) {

list = new ArrayList();

}

list.add(position, t);

notifyDataSetChanged();

}

public void remove(T t) {

if (list != null) {

list.remove(t);

}

notifyDataSetChanged();

}

public void remove(int position) {

if (list != null) {

list.remove(position);

}

notifyDataSetChanged();

}

public void clear() {

if (list != null) {

list.clear();

}

notifyDataSetChanged();

}

public void refresh() {

if (list != null) {

notifyDataSetChanged();

}

}

public static class ViewHolder {

private View item;

private SparseArray mViews;

private int position;

private ViewHolder(Context context, ViewGroup parent, int layoutRes) {

mViews = new SparseArray();

View convertView = LayoutInflater.from(context).inflate(layoutRes, parent, false);

convertView.setTag(this);

item = convertView;

}

//绑定ViewHolder与item

public static ViewHolder bind(Context context, View convertView, ViewGroup parent, int layoutRes, int position) {

ViewHolder holder = null;

if (convertView == null) {

holder = new ViewHolder(context, parent, layoutRes);

} else {

holder = (ViewHolder) convertView.getTag();

holder.item = convertView;

}

holder.position = position;

return holder;

}

@SuppressWarnings("unchecked")

public T getView(int id) {

T t = (T) mViews.get(id);

if (t == null) {

t = (T) item.findViewById(id);

mViews.put(id, t);

}

return t;

}

/**

* 获取当前条目

*/

public View getItemView() {

return item;

}

public int getItemPosition() {

return position;

}

/**

* 设置文字

*/

public ViewHolder setText(int id, CharSequence text) {

View view = getView(id);

if (view instanceof TextView) {

((TextView) view).setText(text);

}

return this;

}

/**

* 设置图片

*/

public ViewHolder setImageResource(int id, int drawableRes) {

View view = getView(id);

if (view instanceof ImageView) {

((ImageView) view).setImageResource(drawableRes);

} else {

view.setBackgroundResource(drawableRes);

}

return this;

}

// public ViewHolder setImage(int id, String drawableRes) {

// View view = getView(id);

// if (view instanceof ImageView) {

//

// Bitmap bitmap = FileUtil.stringToBitmap(drawableRes);

// ((ImageView) view).setImageBitmap(bitmap);

// } else {

// return this;

// }

// return this;

// }

/**

* 设置点击监听

*/

public ViewHolder setOnClickListener(int id, View.OnClickListener listener) {

getView(id).setOnClickListener(listener);

return this;

}

/**

* 设置可见

*/

public ViewHolder setVisibility(int id, int visible) {

getView(id).setVisibility(visible);

return this;

}

/**

* 设置标签

*/

public ViewHolder setTag(int id, Object obj) {

getView(id).setTag(obj);

return this;

}

public ViewHolder setTypeface(int id, Typeface typeface) {

View view = getView(id);

if (view instanceof TextView) {

((TextView) view).setTypeface(typeface);

}

return this;

}

public ViewHolder setBackgroundColor(int id, int color) {

getView(id).setBackgroundColor(color);

return this;

}

public ViewHolder setImageBitmap(int id, Bitmap bitmap) {

View view = getView(id);

if (view instanceof ImageView) {

((ImageView) view).setImageBitmap(bitmap);

}

return this;

}

}

}

适用RecyclerView

public abstract class BaseRecyclerAdapter extends RecyclerView.Adapter {

private List list;

private int mLayoutRes;

public BaseRecyclerAdapter(List list, int mLayoutRes) {

this.list = list;

this.mLayoutRes = mLayoutRes;

}

@NonNull

@Override

public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

return ViewHolder.getHolder(parent.getContext(), mLayoutRes, parent);

}

@Override

public void onBindViewHolder(@NonNull ViewHolder holder, int position) {

onBindData(holder, list.get(position));

}

@Override

public int getItemCount() {

return list.size();

}

public abstract void onBindData(ViewHolder holder, T obj);

public static class ViewHolder extends RecyclerView.ViewHolder {

private View itemView;

private SparseArray itemViews;

private int position;

private ViewHolder(@NonNull View itemView) {

super(itemView);

this.itemView = itemView;

itemViews = new SparseArray<>();

}

public static ViewHolder getHolder(Context context, int mLayoutRes, ViewGroup parent) {

ViewHolder holder = null;

if (holder == null) {

holder = new ViewHolder(LayoutInflater.from(context).inflate(mLayoutRes, parent, false));

}

return holder;

}

public T getView(int id) {

T t = (T) itemViews.get(id);

if (t == null) {

t = itemView.findViewById(id);

itemViews.put(id, t);

}

return t;

}

public ViewHolder setText(int id, CharSequence text) {

View view = getView(id);

if (view instanceof TextView) {

((TextView)view).setText(text);

} else if (view instanceof EditText) {

((EditText)view).setText(text);

}

return this;

}

public ViewHolder setOnClickListener(int id, View.OnClickListener listener) {

View view = getView(id);

view.setOnClickListener(listener);

return this;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值