`
hypercube1024
  • 浏览: 83609 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android通过自定义Adapter显示ListView

阅读更多
1. 自定义Adapter继承BaseAdapter,并且实现其中的4个抽象方法
protected class MyFolderListAdapter extends BaseAdapter {

		private LayoutInflater inflater;
		private List<Folder> list;

		public MyFolderListAdapter() {
			super();
			inflater = getLayoutInflater();
			list = new ArrayList<Folder>();
		}

		public MyFolderListAdapter(LayoutInflater inflater, List<Folder> list) {
			super();
			this.inflater = inflater;
			this.list = list;
		}

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

		@Override
		public Object getItem(int position) {
			if (position < list.size()) {
				return list.get(position);
			} else
				return null;
		}

		@Override
		public long getItemId(int position) {
			if (position < list.size()) {
				return list.get(position).getFolerID();
			} else
				return 0;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			Folder folder = list.get(position);

			// 获取当前Item
			View view;
			if (convertView != null
					&& convertView.getId() == R.id.myFolderListItem) {

				// Log.i(LogTag.PROJECT_LOG_TAG, "myFolderListItem id ["
				// + convertView.getId() + "]");
				view = convertView;
			} else {
				view = inflater.inflate(R.layout.my_folder_item, parent, false);
			}

			// 保存当前Item中控件的引用, 每个View对象里面可以通过setTag方法保存一个对象
			FolderViewHolder holder = (FolderViewHolder) view.getTag();
			if (holder == null) {
				holder = new FolderViewHolder();
				holder.myFolderName = (TextView) view
						.findViewById(R.id.myFolderName);
				holder.mailNum = (TextView) view.findViewById(R.id.mailNum);
				view.setTag(holder);
			}

			// 给当前Item中的控件设值
			if (folder != null) {
				holder.myFolderName.setText(folder.getFolderCHNName());
				holder.mailNum.setText("(" + folder.getUnseen() + "/"
						+ folder.getTotalCount() + ")");
			} else {
				holder.myFolderName.setText(R.string.no_myfolder_info);
			}
			return view;
		}

	}

	protected class FolderViewHolder {
		public TextView myFolderName;
		public TextView mailNum;
	}

2.给ListView设置自定义的Adapter即可
listView = (ListView) findViewById(R.id.myFolerListView);
myFolderListAdapter = new MyFolderListAdapter(getLayoutInflater(),
				folderService.getChildrenFolder(folder));
		listView.setAdapter(myFolderListAdapter);
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics