您的位置:首页 > 移动开发 > Android开发

android ListView之BaseAdapter的使用方式

2014-07-05 09:04 417 查看
通常在使用自定义适配器的时候,我们都会掌握一种固定的模式。充分利用convertView+缓存的方式。

private ArrayList<ListBean> list ;
private LayoutInflater mInflater;
public DetailListAdapter(Context context,ArrayList<ListBean> list){
this.list=list;
mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list == null ?0:list.size();
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView == null){
convertView = mInflater.inflate(R.layout.search_info_item_layout, null);
holder = new ViewHolder();
holder.TimeTxt = (TextView) convertView.findViewById(R.id.time_tv);
holder.AddressTxt = (TextView) convertView.findViewById(R.id._address_tv);
holder.processFlagTxt = (TextView) convertView.findViewById(R.id.process_flag_tv);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.TimeTxt.setText(list.get(position).getTime());
holder.AddressTxt.setText(list.get(position).getAddress());
holder.processFlagTxt.setText(list.get(position).getState());
return convertView;
}
class ViewHolder{
TextView TimeTxt;
TextView AddressTxt;
TextView processFlagTxt;
}
}
最近,做百度地图离线下载的时候,发现一种新的方式,很想知道百度的android程序员是如何来写代码的。仔细一看,确实有很大不同。

来自百度地图离线下载的Demo

private ArrayList<MKOLUpdateElement> localMapList = null;
public class LocalMapAdapter extends BaseAdapter {

@Override
public int getCount() {
return localMapList.size();
}

@Override
public Object getItem(int index) {
return localMapList.get(index);
}

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

@Override
public View getView(int index, View view, ViewGroup arg2) {
MKOLUpdateElement e = (MKOLUpdateElement) getItem(index);
view = View.inflate(OfflineDemo.this,
R.layout.offline_localmap_list, null);
initViewItem(view, e);
return view;
}

void initViewItem(View view, final MKOLUpdateElement e) {
Button display = (Button) view.findViewById(R.id.display);
Button remove = (Button) view.findViewById(R.id.remove);
TextView title = (TextView) view.findViewById(R.id.title);
TextView update = (TextView) view.findViewById(R.id.update);
TextView ratio = (TextView) view.findViewById(R.id.ratio);
ratio.setText(e.ratio + "%");
title.setText(e.cityName);
if (e.update) {
update.setText("可更新");
} else {
update.setText("最新");
}
if (e.ratio != 100) {
display.setEnabled(false);
} else {
display.setEnabled(true);
}
remove.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
mOffline.remove(e.cityID);
updateView();
}
});
display.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("x", e.geoPt.longitude);
intent.putExtra("y", e.geoPt.latitude);
intent.setClass(OfflineDemo.this, BaseMapDemo.class);
startActivity(intent);
}
});
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐