您的位置:首页 > 其它

Listview 设置不同类型的item

2015-04-10 14:56 260 查看
要想设置不同的item需要在adapter里面重写两个方法

getItemViewType() 需要注意这个个类型是0开始

getViewTypeCount();

package com.example.listview_01;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class MyAdapter extends BaseAdapter {

private Context context;
private List<ViewItem> list;
private LayoutInflater inflater;

public MyAdapter(Context context, List<ViewItem> list) {
this.context = context;
this.list = list;
inflater = LayoutInflater.from(context);
}

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

@Override
public Object getItem(int position) {
return list.get(position);
}

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

@Override
public int getItemViewType(int position) {
return list.get(position).getType();
}

@Override
public int getViewTypeCount() {
return 2;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
HolderType1 holderType1 = null;
HolderType2 holderType2 = null;
int type = getItemViewType(position);
if (convertView == null) {
// 根据不同的type设置不同的布局
switch (type) {
case 0:
convertView = inflater.inflate(R.layout.activity_item, null);
holderType1 = new HolderType1(convertView);
convertView.setTag(holderType1);
break;

case 1:
convertView = inflater.inflate(R.layout.activity_item2, null);
holderType2 = new HolderType2(convertView);
convertView.setTag(holderType2);
break;
}
} else {
// 根据不同的布局设置不同的holder
switch (type) {
case 0:
holderType1 = (HolderType1) convertView.getTag();
break;
case 1:
holderType2 = (HolderType2) convertView.getTag();
break;
}
}

ViewItem item = list.get(position);
// 根据不同的布局给控件填充数据
switch (type) {
case 0:
holderType1.addressTxt.setText(item.getAddress());
holderType1.nameTxt.setText(item.getName());
holderType1.ageTxt.setText(item.getAge());
break;
case 1:
holderType2.titleTxt.setText(item.getTitle());
break;
}
return convertView;
}

private class HolderType1 {
public TextView nameTxt;
public TextView ageTxt;
public TextView addressTxt;

public HolderType1(View convertView) {
nameTxt = (TextView) convertView.findViewById(R.id.name);
ageTxt = (TextView) convertView.findViewById(R.id.age);
addressTxt = (TextView) convertView.findViewById(R.id.address);
}
}

private class HolderType2 {
public TextView titleTxt;

public HolderType2(View convertView) {
titleTxt = (TextView) convertView.findViewById(R.id.title);
}
}

}


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