gpt4 book ai didi

java - 将项目添加到 RecyclerView 的底部

转载 作者:行者123 更新时间:2023-11-30 05:06:14 25 4
gpt4 key购买 nike

适配器升级时,底部不显示信息

不知 Prop 体问题出在哪里我需要指导,这样我才能了解这个主题正如我在代码中看到的,我想在用户单击按钮时将添加的数据添加到底部。

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

最佳答案

感谢您添加代码。

您需要更新适配器上的 mMessageList 列表。

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

public void addElement(聊天聊天) { mMessageList.add(聊天) }

你这样调用它:

adNewFullChat.addElement(chat);

代替 totalRestaurants.add(chat);

编辑:哦,我没看到你在使用 mLayoutManager.setReverseLayout(true);

如果删除该行,新元素将添加到底部

关于java - 将项目添加到 RecyclerView 的底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54540422/

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