在即时聊天的项目中,聊天界面采用ListView来显示已发送或者是已接受的消息。为了美观,把发送的消息和接受的消息用不同的布局方向来布局。也就是每个ListItem的布局不是唯一的,而是需要根据从适配器里传过来的内容用相应的布局。这样在显示时就会出现混乱,本来自己发送的消息,需要显示在左边,接受的消息显示在右边。但是在滚动时,或者在添加一个消息时,就会出现左右混乱的现象。
解决方法就是:不需要再判断convertView是否为空了,无论它是否为空都需要根据逻辑去重新获得新的布局
即如下代码所示,把判断代码注释掉。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
MessageText msg = mListMessages.get(position);
//if(convertView == null) {
LayoutInflater inflate = ChatActivity.this.getLayoutInflater();
if (msg.getName().equals(getString(R.string.chat_self))) {
view = inflate.inflate(R.layout.chat_msg_row_me, null);
} else {
view = inflate.inflate(R.layout.chat_msg_row, null);
}
//} else {
//view = convertView;
//}
这样数据混乱的问题就得以解决了,但是应用程序性能会降低,所以不建议使用。网上有说通过添加Tag标记可以解决,但不知道怎么做。
回答评级:★★★☆☆☆☆☆☆ 回答者:{geiwww}geiwww 2-2
回答