Android開發-適配器優化

在android開發中,常用ListView、GridView來顯示多項數據。對適配器加以優化能夠讓每次適配數據變得更加簡單,性能更加高效。下面是適配器優化後的代碼:

public abstract class CommonAdapter<<span style="color:#20999d;">T> extends BaseAdapter{
Context context;
int resId;
List<</font>T> datas;
LayoutInflater layoutInflater;

public CommonAdapter(List<</font>T> datas,Context context,int resId)
{

this.datas=datas;
this.context=context;
this.resId=resId;
layoutInflater=LayoutInflater.from(context);
}

@Override
public int getCount() {

return datas.size();
}

@Override
public Object getItem(int i) {
return datas.get(i);
}

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

@Override
public View getView(int i, View view, ViewGroup viewGroup) {

T data = datas.get(i);


if(view==null)
{

view = layoutInflater.inflate(resId,null);

ViewHolder holder = new ViewHolder(view);
view.setTag(holder);

}

ViewHolder holder = (ViewHolder) view.getTag();

setData(data,holder,context);

return view;
}


public abstract void setData(T data, ViewHolder holder,Context context);

}
//創建一個類來保存控件

 
public class ViewHolder {

Map allview = new HashMap<>();
View item;
public ViewHolder(View item) {

this.item=item;
}

public View getView(int redid)
{

View v = allview.get(redid);
if(v==null)
{

View view = item.findViewById(redid);
allview.put(redid,view);
return view;
}
else{
return v;
}
}
}
//使用適配器:
public class ArticleAdapter extends CommonAdapter{
public ArticleAdapter(List datas, Context context, int resId) {
super(datas, context, resId);
}

@Override
public void setData(Article data, ViewHolder holder,Context context) {
ImageView logo = (ImageView)holder.getView(R.id.alogo);
TextView title = (TextView)holder.getView(R.id.aname);

logo.setImageBitmap(data.logo);
title.setText(data.title);
}
}
使用適配器時,傳入數據,上下文,模板id即可
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章