0
我在使用不同的項目列表項目時出現問題。Android ListView:光標適配器使用不正確的項目類型
這裏是我下面的代碼:
private class ChatAdapter extends CursorAdapter {
private LayoutInflater mInflater;
private static final int OWN_MESSAGE = 0;
private static final int INTERLOCUTOR_MESSAGE = 1;
public ChatAdapter(Context context, Cursor c) {
super(context, c, false);
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
final TextView text = (TextView) view.findViewById(R.id.chat_message_text);
final String message = cursor.getString(MessagesQuery.MESSAGE_TEXT);
text.setText(message);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup group) {
View view = null;
final int sender_id = cursor.getInt(MessagesQuery.SENDER_ID);
final int messageType = getItemViewType(sender_id);
switch (messageType) {
case OWN_MESSAGE:
view = (View) mInflater.inflate(R.layout.list_item_message_own, null);
break;
case INTERLOCUTOR_MESSAGE:
view = (View) mInflater.inflate(R.layout.list_item_message_interlocutor, null);
break;
}
return view;
}
@Override
public int getItemViewType(int sender_id) {
return (sender_id == Prefs.getIntProperty(mContext, R.string.key_user_id)) ? OWN_MESSAGE
: INTERLOCUTOR_MESSAGE;
}
@Override
public int getViewTypeCount() {
return 2;
}
}
一切正常,直到我開始滾動。有時候數據推向錯誤的佈局的問題。我明白,這可能是因爲重複使用視圖的列表項。 但我不明白如何強制適配器在bindView()中使用正確的視圖? 也許這是不是很難理解,但我不能:-( 誰能告訴我哪裏是我的問題嗎?
PS對不起我不完美的英語。
你完全正確。我沒有正確理解getItemViewType()方法。謝謝你幫助我!現在一切正常。 – Infernus