Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android ListView之BaseAdapter的使用方式

android ListView之BaseAdapter的使用方式

編輯:關於Android編程

通常在使用自定義適配器的時候,我們都會掌握一種固定的模式。充分利用convertView+緩存的方式。


	private ArrayList list ;
	private LayoutInflater mInflater;
	public DetailListAdapter(Context context,ArrayList 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 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);
				}
			});
		}

	}



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved