添加项目到RecyclerView底部

问题描述 投票:1回答:1

当适配器升级,在底部没有显示信息

我不知道到底是哪里的问题,我需要的指导,所以我可以了解这个问题我在代码中看到的,我想添加的添加数据下到谷底,当用户点击该按钮。

                mLayoutManager = new LinearLayoutManager(activity);
                mLayoutManager.setStackFromEnd(true);
                mLayoutManager.setReverseLayout(true);
                adminchat.setLayoutManager(mLayoutManager);
                adNewFullChat = new AdNewFullChat(activity ,  totalRestaurants);
                adminchat.setAdapter(adNewFullChat);
                mLayoutManager.smoothScrollToPosition(adminchat, null, totalRestaurants.size());



public void onClick(View view) {
                            String text = chattext.getText().toString();
                            if (text.length() > 0) {
                                final Chat chat = new Chat();
                                chat.setTag("admin");
                                chat.setTimestamp(format);
                                chat.setUserid(userid);
                          totalRestaurants.add(chat);
                                        adNewFullChat.notifyDataSetChanged();
                                        if (adNewFullChat.getItemCount() > 1) {
                                            adminchat.getLayoutManager().smoothScrollToPosition(adminchat, null, adNewFullChat.getItemCount() - 1);
                                        }

适配器代码:我完全不明白的地方的工作

public AdNewFullChat(Context context, List<Chat> messageList) {
    mContext = context;
    mMessageList = messageList;
}

@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
    super.onAttachedToRecyclerView(recyclerView);

    mRecyclerView = recyclerView;
}


@Override
public int getItemCount() {
    return mMessageList.size();
}

// Determines the appropriate ViewType according to the sender of the message.
@Override
public int getItemViewType(int position) {
    Chat message = (Chat) mMessageList.get(position);

    if (message.getTag().equals("user")) {
        return VIEW_TYPE_MESSAGE_RECEIVED;

    } else if (message.getTag().equals("admin")) {
        return VIEW_TYPE_MESSAGE_SENT;

    }
    return 0;
}

// Inflates the appropriate layout according to the ViewType.
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view;

    if (viewType == VIEW_TYPE_MESSAGE_SENT) {
        view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.my_message, parent, false);
        return new SentMessageHolder(view);
    } else if (viewType == VIEW_TYPE_MESSAGE_RECEIVED) {
        view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.their_message, parent, false);
        return new ReceivedMessageHolder(view);
    }

    return null;
}



// Passes the message object to a ViewHolder so that the contents can be bound to UI.
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    Chat message = (Chat) mMessageList.get(position);

    switch (holder.getItemViewType()) {
        case VIEW_TYPE_MESSAGE_SENT:
            ((SentMessageHolder) holder).bind(message);
            break;
        case VIEW_TYPE_MESSAGE_RECEIVED:
            ((ReceivedMessageHolder) holder).bind(message);
    }
java android
1个回答
0
投票

感谢添加代码。

您需要更新适配器上的mMessageList名单。

更新totalRestaurants不会修改在适配器你可以做什么是有这样的适配器的方法中的数据:

public void addElement(Chat chat) { mMessageList.add(chat) }

你这样称呼它:

adNewFullChat.addElement(chat);

而不是totalRestaurants.add(chat);

编辑:喔,我没有看到你正在使用qazxsw POI

如果删除该行的新元素将被添加至底部

© www.soinside.com 2019 - 2024. All rights reserved.