您的位置:首页 > 其它

关于listView不同数据类型的加载

2016-10-19 09:02 330 查看
在聊天界面中需要使用到lisview来填充聊天对话,这个时候聊天内容不仅仅包括文字,还会有图片甚至是发红包之类的。这个时候就需要考虑vietype 了。

0.

创建两个viewtype对应的类,我这里用到的是 文字和图片对应的viewtype

public class TextMessage {
private String text;

public TextMessage(String content) {
this.text = content;
}

public String getText() {
return text;
}
}


public class ImageMessage {
private int imageResId;

public ImageMessage(int imageResId) {
this.imageResId = imageResId;
}

public int getImageResId() {
return imageResId;
}
}


1.

private interface ViewType
{
int TEXT = 0;
int IMAGE = 1;
}

2.

@Override
public int getItemViewType(int position) {
if (getItem(position) instanceof TextMessage) {
return ViewType.TEXT;
} else {
return ViewType.IMAGE;
}
}

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

3.

    @Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
if (getItemViewType(position) == ViewType.TEXT) {
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.text_message_item, parent, false);
}
TextView textView = (TextView) convertView.findViewById(R.id.message_content);

TextMessage textMessage = (TextMessage) messageList.get(position);
textView.setText(textMessage.getText());
} else {
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.image_message_item, parent, false);
}
ImageView imageView = (ImageView) convertView.findViewById(R.id.message_image);

ImageMessage imageMessage = (ImageMessage) messageList.get(position);
imageView.setImageResource(imageMessage.getImageResId());
}

return convertView;
}

4.
        MessageAdapter adapter = new MessageAdapter(messages);
listView.setAdapter(adapter);


重点是对数据源此时的数据类型(viewtype的类型)这部分代码进行理解!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: