【问题标题】:How to add two arraylist which has different data in android to get a single listview如何在android中添加两个具有不同数据的arraylist以获得单个listview
【发布时间】:2015-11-19 13:59:39
【问题描述】:

我有两个数组列表。 Arraylist one 包含我的聊天应用程序中的用户列表 ArrayList 2 包含我的聊天应用程序中的组列表 我在这里要做的是我想在我的聊天应用程序中添加用户列表和组列表。

这是我的第一个数组列表: 这里用户是我的模型类 userMap 是拥有所有用户列表的 HashMap

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

我的第一个数组列表的适配器是

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

这是我的第二个数组列表,其中包含所有组 这里 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 请告诉我一种方法。

【问题讨论】:

    标签: android listview arraylist adapter autocompletetextview


    【解决方案1】:

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

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

    希望对你有所帮助;)

    【讨论】:

    • 之后我可以将 ChatObjrct 数组列表设置为我的视图吗?
    • 我确实像你说的那样。现在我通过适配器将此聊天对象设置为我的自动完成文本视图。布局怎么样。我可以设置哪个??
    猜你喜欢
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 2022-11-03
    • 2014-11-04
    • 2011-07-25
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多