万能适配器(2) 抽取CommonAdapter
BaseAdapter中的数据和方法基本一致
getCount(), getItemId(), getItem()
主要是getView实现不同,
将提取出共性方法
<span style="font-size:18px;">package com.example.utils;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import com.example.magicAdapter.R;
/*
* 提供一个 CommonAdatper
*
*/
public abstract class CommonAdapter<T> extends BaseAdapter {
<span style="white-space:pre"> </span>protected Context context;
<span style="white-space:pre"> </span>protected LayoutInflater minInflater;
<span style="white-space:pre"> </span>protected List<T> mDatas;
protected int layoutId;
<span style="white-space:pre"> </span>public CommonAdapter(Context context,
<span style="white-space:pre"> </span>List<T> mDatas,int layoutId) {
<span style="white-space:pre"> </span>super();
<span style="white-space:pre"> </span>this.context = context;
<span style="white-space:pre"> </span>this.layoutId =layoutId;
<span style="white-space:pre"> </span>minInflater = LayoutInflater.from(context);
<span style="white-space:pre"> </span>this.mDatas = mDatas;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>public int getCount() {
<span style="white-space:pre"> </span>// TODO Auto-generated method stub
<span style="white-space:pre"> </span>return mDatas.size();
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>public T getItem(int position) {
<span style="white-space:pre"> </span>// TODO Auto-generated method stub
<span style="white-space:pre"> </span>return mDatas.get(position);
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>public long getItemId(int position) {
<span style="white-space:pre"> </span>// TODO Auto-generated method stub
<span style="white-space:pre"> </span>return position;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>/**
<span style="white-space:pre"> </span> * 供子类实现的
<span style="white-space:pre"> </span> */
<span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>public View getView(int position, View convertView, ViewGroup parent){
<span style="white-space:pre"> </span>//首先获取MagicViewHolder
<span style="white-space:pre"> </span>MagicViewHolder magicViewHolder
<span style="white-space:pre"> </span>= MagicViewHolder.get(context, convertView, parent,
<span style="white-space:pre"> </span>layoutId, position);<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span> //通过magicViewHolder和item中的viewid 获取指定的view,并设置值
<span style="white-space:pre"> </span>convert(magicViewHolder, getItem(position));
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>//通过ViewHolder获取convertView
<span style="white-space:pre"> </span>return magicViewHolder.getConvertView();
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>/**
<span style="white-space:pre"> </span> * //通过magicViewHolder和item中的viewid 获取指定的view,并设置值
<span style="white-space:pre"> </span> */
<span style="white-space:pre"> </span>public abstract void convert(MagicViewHolder magicViewHolder, T t);
}
</span>
再来看一下简化后的MagicAdapter
(1)继承自定义CommonAdapter
(2) 主要实现为控件赋值的方法convert();\
package com.example.utils;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.example.baseAdapter.Bean;
import com.example.magicAdapter.R;
public class MyMagicAdapter extends <span style="color:#ff0000;">CommonAdapter<Bean></span> {
<span style="white-space:pre"> </span>public MyMagicAdapter(Context context, List<Bean> mDatas, int layoutId) {
<span style="white-space:pre"> </span>super(context, mDatas, layoutId);
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>public void convert(MagicViewHolder magicViewHolder, Bean bean) {
<span style="white-space:pre"> </span>//通过magicViewHolder和item中的viewid 获取指定的view,并设置值
<span style="white-space:pre"> </span>((TextView)(magicViewHolder.getView(R.id.item_title))).setText(bean.getTitle());
<span style="white-space:pre"> </span>((TextView)(magicViewHolder.getView(R.id.item_desc))).setText(bean.getDesc());
<span style="white-space:pre"> </span>((TextView)(magicViewHolder.getView(R.id.item_time))).setText(bean.getTime());
<span style="white-space:pre"> </span>((TextView)(magicViewHolder.getView(R.id.item_phone))).setText(bean.getPhone());
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>
}
\
\