一个listview中item不同布局

package com.example.androidtestproject.listview.moretype;

import java.util.List;

import com.example.androidtestproject.R;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class MoreLayoutAdapter extends BaseAdapter {
    private List<Person> list;
    private Context context;
    private final int TYPE_AT = 0;
    private final int TYPE_POST_REPLY = 1;
    private final int TYPE_POST_SYSTEM = 2;
    private LayoutInflater inflater;

public MoreLayoutAdapter(Context context, List<Person> list) {
	this.context = context;
	this.list = list;
}

[@Override](https://my.oschina.net/u/1162528)
public int getCount() {
	return list.size();
}

[@Override](https://my.oschina.net/u/1162528)
public Person getItem(int position) {
	return list.get(position);
}

[@Override](https://my.oschina.net/u/1162528)
public long getItemId(int position) {
	return position;
}

[@Override](https://my.oschina.net/u/1162528)
public View getView(int position, View convertView, ViewGroup parent) {
	AtHolder atHolder = null;
	PostReplayHolder postReplayHolder = null;
	PostSystemHolder postSystemHolder = null;
	int type = getItemViewType(position);

	if (convertView == null) {
		inflater = LayoutInflater.from(context);
		switch (type) {
		case TYPE_AT:
			convertView = inflater.inflate(R.layout.more_layout1, null);
			atHolder = new AtHolder();
			atHolder.textView = (TextView) convertView.findViewById(R.id.text1);
			convertView.setTag(atHolder);
			break;
		case TYPE_POST_REPLY:
			convertView = inflater.inflate(R.layout.more_layout2, null);
			postReplayHolder = new PostReplayHolder();
			postReplayHolder.button = (Button) convertView.findViewById(R.id.button1);
			convertView.setTag(postReplayHolder);
			break;

		case TYPE_POST_SYSTEM:
			convertView = inflater.inflate(R.layout.more_layout3, null);
			postSystemHolder = new PostSystemHolder();
			postSystemHolder.imageView = (ImageView) convertView.findViewById(R.id.image1);
			convertView.setTag(postSystemHolder);
			break;

		default:
			break;
		}

	} else {
		switch (type) {
		case TYPE_AT:
			atHolder = (AtHolder) convertView.getTag();
			break;
		case TYPE_POST_REPLY:
			postReplayHolder = (PostReplayHolder) convertView.getTag();
			break;

		case TYPE_POST_SYSTEM:
			postSystemHolder = (PostSystemHolder) convertView.getTag();
			break;

		default:
			break;
		}
	}
	// set content
	switch (type) {
	case TYPE_AT:
		atHolder.textView.setText(list.get(position).getName());
		break;
	case TYPE_POST_REPLY:
		postReplayHolder.button.setText(list.get(position).getName());
		break;

	case TYPE_POST_SYSTEM:
		postSystemHolder.imageView.setBackgroundResource(R.drawable.ic_launcher);
		break;

	default:
		break;
	}
	return convertView;
}

[@Override](https://my.oschina.net/u/1162528)
public int getItemViewType(int position) {

	if (list.get(position).getType() == 0) {
		return TYPE_AT;
	} else if (list.get(position).getType() == 1) {
		return TYPE_POST_REPLY;
	} else if (list.get(position).getType() == 2) {
		return TYPE_POST_SYSTEM;
	}
	return super.getItemViewType(position);
}

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

public class AtHolder {
	TextView textView;
}

public class PostReplayHolder {
	Button button;
}

public class PostSystemHolder {
	ImageView imageView;
}

public class SystemFirendHolder {

}

public class SystemOtherHolder {

}

}

转载于:https://my.oschina.net/u/435726/blog/645007

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值