異なるタイプのオブジェクトを同じ に表示したいのですが、ListView
これらのオブジェクトを区別する方法がわかりませんgetItem(position)
は、 、 、および項目のいずれかで、異なるレイアウトListView
のリストを表示します。Messages
Chat
Notification
Chat
Notification
これはアダプターです:
public class MailboxAdapter extends BaseAdapter {
private ArrayList<Messages> m_alMessages = null;
private Messages getItem(int position) {
return m_alMessages.get(position)
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (m_alMessages != null) {
if (getItem(position).isChat()) {
final Chat cChatItem = getItem(position);
if (convertView == null) {
//Cat logic
// ...
}
} else {
final Notification nNotifItem = getItem(position);
if (convertView == null) {
//Notification logic
// ...
}
}
}
}
メッセージ クラス (最小限)
public class Message {
private long m_lId = 0L;
private boolean m_bIsChat = false;
public boolean isChat() { return m_bIsChat; }
}
とNotification
クラスChat
:
public class Notification extends Message { ... }
public class Cat extends Message { ... }
アクティビティの開始時に Web サービスからチャットのリストと通知のリストを取得しているため、それらをそれぞれの順序 (日付) でメッセージの新しいリストに追加し、このリストを使用して m アダプターをインスタンス化する必要があります。のMessage
それは良い習慣ですか?