【发布时间】:2018-01-24 13:59:41
【问题描述】:
我有一个列表视图,当我滚动它时它会混合它的项目。这是我的代码:
public class ListView_MessagesAdapter extends BaseAdapter {
private List<Message> messages;
public ListView_MessagesAdapter(List<Message> messages) {
this.messages = messages;
}
@Override
public int getCount() {
return this.messages != null ? this.messages.size() : 0;
}
@Override
public Message getItem(int i) {
return this.messages != null ? this.messages.get(i) : null;
}
@Override
public long getItemId(int i) {
return this.messages != null ? i : -1;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if (view == null)
view = (RelativeLayout) LayoutInflater.from(this.context).inflate(R.layout.listview_messages, viewGroup, false);
Message message = this.getItem(i);
if (message != null) {
switch (message.type) {
case DEFAULT:
this.manageAsDefault(view, message);
break;
case TEXT:
this.manageAsText(view, message);
break;
case AUDIO:
this.managerAsAudio(view, message);
break;
}
}
return view;
}
private void manageAsDefault(View view, Message message) {
// Manage message...
}
private void manageAsText(View view, Message message) {
// Manage message...
}
private void managerAsAudio(View view, Message message) {
// Manage message...
}
}
这就是我绑定列表视图的方式:
ListView_MessagesAdapter adapter = new ListView_MessagesAdapter(messages); lstMessages.setAdapter(adapter);
我以特定顺序将列表视图与 20 条消息绑定。它第一次加载正确,但是当我滚动时,项目被混合在一起没有任何意义。
我在网上找到的任何解决方案似乎都有效。有什么解决办法吗?
【问题讨论】:
-
请提供更多关于它如何不工作的细节。
-
请看我的更新