1. type count
2, type position
3, getview by type
@Override
public int getItemViewType(int position) {
int type = -1;
MessageBean message = (MessageBean) getItem(position);
if (message.getAccount_id() == fromAccountId) {
type = TYPE_HE;
} else {
type = TYPE_ME;
}
return type;
}
@Override
public int getViewTypeCount() {
return TYPE_MAX_COUNT;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MessageBean message = (MessageBean) getItem(position);
ViewHolder holder = null;
int type = getItemViewType(position);
if (convertView == null) {
switch (type) {
case TYPE_HE:
convertView = mInflater.inflate(R.layout.a06_item_talk_message_ta, null);
break;
case TYPE_ME:
convertView = mInflater.inflate(R.layout.a06_item_talk_message_me, null);
break;
}
holder = new ViewHolder();
holder.timeView = (TextView) convertView.findViewById(R.id.message_time);
holder.messageView = (TextView) convertView.findViewById(R.id.message_content);
convertView.setTag(holder);
}
holder = (ViewHolder) convertView.getTag();
holder.timeView.setText(A06Utils.getDateStringByUTC(message.getCreate_time()));
holder.messageView.setText(message.getContent());
return convertView;
}
|