在Android开发中一个项目需要在很多地方使用的ListView。既然使用了ListView则不可避免的使用了Adapter,重复写逻辑几乎相同的Adapter也是一件枯燥的事,下面来研究如何复用Adapter.
使用了ListView的两个地方(模拟代码):
一.//第一个ListView
listView.setAdapter(new MyAdapter());
class MyAdapter extends BaseAdapter{
//arrayList是设置给ListView数据的集合
@Override
public int getCount() {
return arrayList.size();
}
@Override
public Object getItem(int i) {
return arrayList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder viewHolder =null;
if(view == null){
view = View.inflate(ThemeFragment.this.getActivity(), R.layout.theme_adapt_item,null);
viewHolder = new ViewHolder();
viewHolder.icon = (ImageView) view.findViewById(R.id.theme_iv);
viewHolder.textView = (TextView) view.findViewById(R.id.theme_text);
view.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) view.getTag();
}
//给ViewHolder设置值,即给ListView的各个组件设置值
BitmapHelper.getBitmapUtils().display(viewHolder.icon, GlobalUrl.ICON_URL+theme.themeInfos.get(i).url);
viewHolder.textView.setText(theme.themeInfos.get(i).des);
return view;
}
}
//为了优化ListView不可避免的使用了ViewHolder来复用
static class ViewHolder{
ImageView icon;
TextView textView;
}
二.//第二个ListView
listView.setAdapter(new MyAdapter());
class MyAdapter extends BaseAdapter{
//arrayList是设置给ListView数据的集合
@Override
public int getCount() {
return arrayList.size();
}
@Override
public Object getItem(int i) {
return arrayList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder viewHolder =null;
if(view == null){
view = View.inflate(HomeFragment.this.getActivity(), R.layout.home_adapt_item, null);
viewHolder = new ViewHolder();
viewHolder.item_icon = (ImageView) view.findViewById(R.id.item_icon);
viewHolder.app_name = (TextView) view.findViewById(R.id.item_title);
viewHolder.app_size = (TextView) view.findViewById(R.id.item_size);
viewHolder.app_introduce = (TextView) view.findViewById(R.id.item_bottom);
view.setTag(viewHolder);
}else{
viewHolder =