在android中我們經(jīng)常用到adapter適配器,今天在網(wǎng)上看到有許多人都寫得有,自己參考了一些,現(xiàn)在自己也寫出來放在自己的博客中,方便以后回顧 代碼:`
public abstract class CommoAdapter extends BaseAdapter{
/** * 上下文 */PRotected Context context;/** * 數(shù)據(jù)源 */protected List<T> listDatas;/** * Item布局ID */protected int layoutId;public CommoAdapter(Context context, List<T> listDatas, int layoutId){ this.context=context; this.listDatas=listDatas; this.layoutId=layoutId;}@Overridepublic int getCount() { return listDatas==null?0:listDatas.size();}@Overridepublic Object getItem(int position) { return position;}@Overridepublic long getItemId(int position) { return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) { ViewHouder holder = ViewHouder.getViewHolder(context, convertView, parent, layoutId); fillData(holder, position); return holder.getMConvertView();}/** * 填充數(shù)據(jù) * * @param holder * @param position */protected abstract void fillData(ViewHouder holder, int position);` Viewhouder工具類
public class ViewHouder { /** * View容器,用于存放Holer中的View 的SparseArray * 是Android推薦使用的一個(gè)優(yōu)化容器,相當(dāng)于一個(gè)Map<integer,View> */ private SparseArray<View> mViews; /** * Item布局View convertView */ private View mConvertView; public ViewHouder(Context context, ViewGroup parent, int layoutId) { mViews = new SparseArray<View>(); mConvertView = LayoutInflater.from(context).inflate(layoutId, null); mConvertView.setTag(this); } /** * 獲取ViewHolder * * @param context * 上下文 * @param convertView * @param parent * @param layoutId * 布局layout Id * @param * @return */ public static ViewHouder getViewHolder(Context context, View convertView, ViewGroup parent, int layoutId) { if (convertView == null) return new ViewHouder(context, parent, layoutId); return (ViewHouder) convertView.getTag(); } /** * * 獲取Holder中的ItemView * * @param viewId * @return */ @SuppressWarnings("unchecked") public <T extends View> T getView(int viewId) { View item = mViews.get(viewId); if (item == null) { item = mConvertView.findViewById(viewId); mViews.put(viewId, item); } return (T) item; } /** * 設(shè)置TextView 的文本 * * @param viewId * @param text */ public TextView setTVText(int viewId, String text) { TextView tv = getView(viewId); tv.setText(text); return tv; } public TextView setsetBackground(int viewId,int color){ TextView tv=getView(viewId); return tv; } /** * 設(shè)置EditText 的文本 * * @param viewId * @param text */ public EditText setETText(int viewId, String text) { EditText et = getView(viewId); et.setText(text); return et; } /** * 設(shè)置TextView 的文本 * * @param viewId// * @param text */ public ImageView setIVBg(int viewId, int imgId) { ImageView iv = getView(viewId); iv.setImageResource(imgId); return iv; } /** * 設(shè)置TextView 的文本 * * @param viewId * @param text */ public void setTextView(int viewId, String text) { TextView tv = getView(viewId); tv.setText(text); } /** * 獲取convertView * * @return */ public View getMConvertView() { return mConvertView; }}自己的adapter,列如名字叫MessgeAdapter
public class MessgeAdapter extends CommoAdapter<String>{ public MessgeAdapter(Context context, List<String> listDatas, int layoutId) { super(context, listDatas, layoutId); } @Override protected void fillData(ViewHouder holder, int position) { TextView tvMessgeTitle=holder.getView(R.id.tvMessgeTitle); tvMessgeTime.setText(TimeFormat.DateFormat(listDatas.get(position))); }}在Activity中使用 List list; ListView listview;
MessgeAdapter adapter=new MessgeAdapter (this,list,R.layout.item_messge); listview.setadapter(adapter);
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注