ListView多类型Item

来源:互联网 发布:淘宝上怎么出售qq号码 编辑:程序博客网 时间:2024/05/18 14:27

在这里做了一个小demo,实现一个ListView中包含多种Item。

首先,建立一个继承自BaseAdapter的类,在里面重写如下方法。

1  获取ListView的Item个数 --->getCount()

@Overridepublic int getCount() {// TODO Auto-generated method stubreturn mData.size();}


2 根据Item位置设置Item View Type ---->getItemViewType(int position)

@Overridepublic int getItemViewType(int position) {// TODO Auto-generated method stubif (getItem(position) instanceof String)return 1;elsereturn 0;}

3 获取ListView中想要的Item类型个数 ---->getViewTypeCount()

@Overridepublic int getViewTypeCount() {// TODO Auto-generated method stubreturn 2;}

4 按Item位置获取当前Item的对象Object ---->getItem(int position)

@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn mData.get(position);}5 最后得修改非常重要的一个方法,该方法主要为了获得View ---->getView(int position, View convertView, ViewGroup parent)
@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubLog.e("position", "" + position);int nType = getItemViewType(position);if (nType == 1)convertView = mInflater.inflate(R.layout.list_item, null);elseconvertView = mInflater.inflate(R.layout.list_item2, null);return convertView;}

全部代码
package com.example.testlist;import java.util.ArrayList;import android.app.Activity;import android.content.Context;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;public class NewAdapter extends BaseAdapter {private LayoutInflater mInflater;private ArrayList<Object> mData;public NewAdapter(Activity context) {mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);mData = new ArrayList<Object>();}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn mData.size();}@Overridepublic int getItemViewType(int position) {// TODO Auto-generated method stubif (getItem(position) instanceof String)return 1;elsereturn 0;}@Overridepublic int getViewTypeCount() {// TODO Auto-generated method stubreturn 2;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn mData.get(position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubLog.e("position", "" + position);int nType = getItemViewType(position);if (nType == 1)convertView = mInflater.inflate(R.layout.list_item, null);elseconvertView = mInflater.inflate(R.layout.list_item2, null);return convertView;}public void addData(ArrayList<Object> data) {if (mData == null) {mData = data;return;}mData.addAll(data);}}