如何在android中添加两个具有不同数据的arraylist来获取单个listview

时间:2015-11-19 13:59:40

标签: android listview arraylist adapter autocompletetextview

我有两个arraylist。 Arraylist包含我的聊天应用程序中的usrs列表 ArrayList Two包含聊天应用程序中的Groups列表 我想在这里做的是我想在我的聊天应用程序中添加用户列表和组列表。

这是我的第一个arraylist: 这里User是我的模型类 userMap是HashMap,其中包含所有用户列表

ArrayList<User> users = new ArrayList<User>();
        for (User user : SocketSingleton.userMap.values()) {
            if (user.getId() != loggedUserId) {
                users.add(user);
            }
        }

我第一个arraylist的适配器是

UserAdapter adapter1 = new UserAdapter(getActivity(),R.layout.all_user_list_item,users);

这是我的第二个arraylist,其中包含所有组 这里Channel是我的团体模型类。而listchannels是HashMap,它包含所有组。

 ArrayList<Channel> groups = new ArrayList<JoinedChannel>();
        for (Channel channel : SocketSingleton.listchannels.values()) {
            groups.add(channel);
        }

第二个数组列表的适配器

 ChannelAdapter adapter2 = new ChannelAdapter(getActivity(), R.layout.grouplist, groups);

我想添加两个列表以便我可以将包含所有用户和组的单个列表视图设置为AutocompleteTextview 请告诉我一种方法。

1 个答案:

答案 0 :(得分:0)

你不能组合两个不同的适配器。作为一种选择,是创建一个单独的类,它将包含两个对象之间的共同点,例如:

class ChatObject{
private int id;
prvate String title;
private boolean isUser;
}

别忘了添加构造函数和get / set方法。

当您填充阵列时,还要创建将在列表视图中使用的新对象。

ArrayList<User> users = new ArrayList<User>();
ArrayList<ChatObject > chatObjects= new ArrayList<ChatObject >();
        for (User user : SocketSingleton.userMap.values()) {
            if (user.getId() != loggedUserId) {
                users.add(user);
                ChatObject chatObject = new ChatObject();
                chatObject.setId(user.getId());
                chatObject.setTitle(user.getName());  //for example
                chatObject.setIsUser(true);
                chatObjects.add(chatObject);
            }
        }

ArrayList<Channel> groups = new ArrayList<JoinedChannel>();
        for (Channel channel : SocketSingleton.listchannels.values()) {
            groups.add(channel);
            ChatObject chatObject = new ChatObject();
            chatObject.setId(channel.getId());
            chatObject.setTitle(channel.getTitle());  //for example
            chatObject.setIsUser(false);
            chatObjects.add(chatObject);
        }

希望它可以帮到你;)