快速开发Adapter
来源:互联网 发布:盘古数据科技有限公司 编辑:程序博客网 时间:2024/06/03 21:16
1、首先将getView以外的方法重写,简化重复步骤:
import java.util.List;import android.content.Context;import android.view.LayoutInflater;import android.widget.BaseAdapter;public abstract class DefaultAdapter<T> extends BaseAdapter {private final List<T> mList;private Context mContext;private LayoutInflater inflater;public DefaultAdapter(Context context, List<T> list) {mContext = context;mList = list;inflater = LayoutInflater.from(mContext);}public Context getContext() {return mContext;}public LayoutInflater getInflater() {return inflater;}public List<T> getList() {return mList;}@Overridepublic int getCount() {return mList.size();}@Overridepublic Object getItem(int position) {return mList.get(position);}@Overridepublic long getItemId(int position) {return position;}}
这样自己的adapter只要重写getView方法就可以。
2、一般情况下adapter都只有一个布局文件,不会重写getViewTypeCount方法,这是可以进一步简化:
import java.util.List;import android.content.Context;import android.view.View;import android.view.ViewGroup;public abstract class DefaultSingleAdapter<T> extends DefaultAdapter<T> {private int mResourceId;public abstract Object onCreateViewHolder(View convertView);public abstract void onBindViewHolder(Object viewHolder, int position);public DefaultSingleAdapter(Context context, int resourceId, List<T> list) {super(context, list);mResourceId = resourceId;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {Object viewHolder = null;if(convertView == null) {convertView = getInflater().inflate(mResourceId, parent, false);viewHolder = onCreateViewHolder(convertView);convertView.setTag(viewHolder);} else {viewHolder = convertView.getTag();}onBindViewHolder(viewHolder, position);return convertView;}}这样自己的adapter只要重写两个方法就可以,如下:
public class CityAdapter extends DefaultSingleAdapter<City> {public CityAdapter(Context context, List<City> list) {super(context, R.layout.layout_city_item, list);}private static final class ViewHolder {TextView tv_id;TextView tv_name;public ViewHolder(View view) {tv_id = (TextView) view.findViewById(R.id.tv_id);tv_name = (TextView) view.findViewById(R.id.tv_name);}}@Overridepublic Object onCreateViewHolder(View convertView) {return new ViewHolder(convertView);}@Overridepublic void onBindViewHolder(Object viewHolder, int position) {ViewHolder holder = (ViewHolder) viewHolder;City city = (City) getItem(position);holder.tv_id.setText(String.valueOf(city.getId()));holder.tv_name.setText(city.getName());}}和以前相比简化了大部分的重复代码,哈哈!
========2015-3-9==========
其实viewholder也可以用泛型来代替的,这样回调中就不用强转了:
public abstract class DefaultSingleAdapter<T, K> extends DefaultAdapter<T> {private int mResourceId;public abstract K onCreateViewHolder(View convertView);public abstract void onBindViewHolder(K viewHolder, int position);public DefaultSingleAdapter(Context context, int resourceId, List<T> list) {super(context, list);mResourceId = resourceId;}@SuppressWarnings("unchecked")@Overridepublic View getView(int position, View convertView, ViewGroup parent) {K viewHolder = null;if(convertView == null) {convertView = getInflater().inflate(mResourceId, parent, false);viewHolder = onCreateViewHolder(convertView);convertView.setTag(viewHolder);} else {viewHolder = (K) convertView.getTag();}onBindViewHolder(viewHolder, position);return convertView;}}
0 0
- 快速开发Adapter
- 快速开发--adapter
- 快速开发Adapter(源码)
- Android快速开发之Adapter
- Android 快速开发--万能的Adapter
- Android 快速开发--万能的Adapter
- Android 快速开发--万能的Adapter
- Android快速开发工具---通用的适配器Adapter
- Android快速开发之appBase——(2).万能的Adapter
- 【Android】快速开发偷懒必备,一句话搞定所有ViewGroup的Adapter . 支持自定义ViewGroup
- Android快速生成通用Adapter
- Android 快速完成Adapter编辑
- Android界面开发-Adapter
- android开发--ListView&Adapter
- Android开发之adapter
- RecyclerView快速通用适配Adapter
- WebSphere JCA Adapter 开发入门
- 安卓开发-cursor adapter
- 整理常用正则表达式
- HDOJ 1394 求最小你序数
- 【学习笔记】关于struts2配置一两点
- 通俗理解LDA主题模型
- springMVC3学习(九)--redirect和forward跳转
- 快速开发Adapter
- GBK与UTF-8
- 毛泽东家族中为革命牺牲的六位英烈
- Makefile 中:= ?= += =的区别
- Remove Duplicates from Sorted Array
- grep
- 马尔科夫链MCMC采样算法和LDA Gibbs Sampling
- Convert Sorted List to Binary Search Tree
- springMVC3学习(十)--注解式控制器