gpt4 book ai didi

android - 在同一个ListAdapter中显示不同的对象

转载 作者:行者123 更新时间:2023-11-29 15:22:56 25 4
gpt4 key购买 nike

我想在同一个ListView中显示不同类型的对象,但我不知道如何通过getItem(position)来区分这些对象

ListView 显示一个 Messages 列表,它可以是 Chat,也可以是 Notification,以及ChatNotification 项有不同的布局。

这是适配器:

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; }

}

NotificationChat 类:

public class Notification extends Message { ... }

public class Cat extends Message { ... }

我在开始 Activity 时从网络服务中检索聊天列表和通知列表,因此我必须将它们按各自的顺序(日期)添加到新的消息列表中,然后实例化适配器使用此 Message

列表

这是一个好习惯吗?

最佳答案

只需向类对象和适配器中添加一个 bool 标志,检查该标志,如果是聊天则使用一种布局,如果它被标记为通知则使用另一种布局。没问题

有教程here这实际上或多或少地涵盖了您在 listView 中尝试使用不同 View 布局所做的事情

在您的适配器中创建两个查看器,一个用于聊天,一个用于通知。然后,在 getView() 中,获取要为其创建 View 的对象,检查 bool 标志,实例化正确的持有者并根据标志膨胀 View ,然后像只有那个 View 一样设置 View 元素类和 ListView 将显示您在适当位置设置该元素的 View 。

关于android - 在同一个ListAdapter中显示不同的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16540683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com