I've a listview that mixs its items when i scroll it. This is my code:
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...
}
}
And this is how i bind the listview:
ListView_MessagesAdapter adapter = new ListView_MessagesAdapter(messages); lstMessages.setAdapter(adapter);
I bind the listview with 20 messages in a specific order. It loads correctly the first time but, when i scroll, the items are being mixed without any sense.
Any solutions that i've found on web seems work. Any solution?