listview多种条目展示案例

	public class myAdapter extends BaseAdapter {
		//	获得当前条目类型
		public int getItemViewType(int position) {
			// 如果是标题,返回0
			if (position == 0 || position == userAppList.size() + 1) {
				return 0;
			} else {
				// 如果是应用条目,返回1
				return 1;
			}
		}


		//获得条目种类个数
		@Override
		public int getViewTypeCount() {
			return super.getViewTypeCount() + 1;
		}


		@Override
		//所有条目总数
		public int getCount() {
			return systemAppList.size() + userAppList.size() + 2;
		}


		/*
		 * 返回当前条目
		 */
		public AppInfo getItem(int position) {
			if (position == 0 || position == userAppList.size() + 1) {
				return null;
			} else if (position < userAppList.size() + 1) {
				return userAppList.get(position - 1);
			} else {
				return systemAppList.get(position - 2 - userAppList.size());
			}
		}


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


		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			int type = getItemViewType(position);


			// 如果是纯文本
			if (type == 0) {
				ViewTitleHolder vth = null;
				
				if (convertView == null) {
					convertView = View.inflate(getApplicationContext(),
							R.layout.item_appinfo_title, null);
					
					vth = new ViewTitleHolder();
					vth.title = (TextView) convertView
							.findViewById(R.id.tv_appinfo_title);
					
					convertView.setTag(vth);
					
				} else {
					vth = (ViewTitleHolder) convertView.getTag();
				}
				if (position == 0) {
					vth.title.setText("用户应用(" + userAppList.size() + ")");
				} else {
					vth.title.setText("系统应用(" + systemAppList.size() + ")");
				}
				return convertView;
			} else {
				// 如果是应用介绍
				ViewHolder vh = null;
				
				if (convertView == null) {
					convertView = View.inflate(getApplicationContext(),
							R.layout.item_appinfo, null);
					vh = new ViewHolder();
					vh.icon = (ImageView) convertView
							.findViewById(R.id.iv_appIcon);
					vh.appName = (TextView) convertView
							.findViewById(R.id.tv_appName);
					vh.appIsSdcard = (TextView) convertView
							.findViewById(R.id.tv_appIsSdcard);
					convertView.setTag(vh);
				} else {
					vh = (ViewHolder) convertView.getTag();
				}
				
				AppInfo item = getItem(position);
				vh.icon.setImageDrawable(item.icon);
				vh.appName.setText(item.name);
				if (item.isSdcard) {
					vh.appIsSdcard.setText("内存储卡");
				} else {
					vh.appIsSdcard.setText("SdCard应用");
				}
				return convertView;
			}
		}


	}

	private ArrayList<AppInfo> systemAppList; //系统应用信息集合
	private ArrayList<AppInfo> userAppList; //用户应用信息集合

猜你喜欢

转载自blog.csdn.net/sinat_40387150/article/details/80988812