Java 如何延迟向Recyclerview适配器添加元素?

Java 如何延迟向Recyclerview适配器添加元素?,java,android,android-recyclerview,Java,Android,Android Recyclerview,我正在尝试创建聊天机器人。我需要模拟应用程序的交互响应。响应不是来自服务器,而是嵌入在应用程序中。 我正在使用recycleview来实现聊天界面,我需要将每条消息延迟一段特定的时间,以便用户感觉到有人在和他说话 private void displayNewMessage(ArrayList<ChatMessage> messages) { for (int i = 0; i < messages.size(); i++) { c

我正在尝试创建聊天机器人。我需要模拟应用程序的交互响应。响应不是来自服务器,而是嵌入在应用程序中。 我正在使用recycleview来实现聊天界面,我需要将每条消息延迟一段特定的时间,以便用户感觉到有人在和他说话

   private void displayNewMessage(ArrayList<ChatMessage> messages) {
        for (int i = 0; i < messages.size(); i++) {
            chatMessages.add(messages.get(i));
        }
        adapter.notifyDataSetChanged();


    }
private void displayNewMessage(ArrayList消息){
对于(int i=0;i
前面的方法用于向用户推送消息数组,如何延迟将每个元素添加到适配器。或者将它们全部推到适配器上,并延迟在适配器it self中显示它们


我尝试使用Handler,但它不起作用,它会延迟所有消息并将它们推到一起。

在for循环中,在向arrat添加数据后,将delayedpost放在回收器上,并在run方法中调用notify,这将模拟每条消息的延迟,您可以使用Handler.post delay(new Runnable(),3000),而不是延迟然后一次显示所有消息;
您将代码放在他们的runnable接口运行方法下,它将在延迟秒后启动。

这是一个逻辑问题,而不是编程问题

首先,为什么
会延迟所有消息并将它们推到一起
——因为for循环会立即将它们添加到适配器中

另一种解决方案是在用户发送消息线程的其他位置使用处理程序

假设我们有用户
sendMessageButton

我们将添加消息和等待时间,您可以将其设置为随机时间,例如:

 sendMessageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {

                    chatMessages.add(newMessage);
                    adapter.notifyDataSetChanged();

                }
            },random);

        }
    });

问题是,它不是一条消息,而是一组消息,类似于谷歌助手,用户有选择,如果他选择其中一条,选择将发送到一个方法,以确定合适的响应并返回消息列表。如果用户有“下一步”这样的按钮,您的解决方案就可以了,这样我们就可以管理按钮上的延迟click@KhaledAbdElnaser然后,您必须向我们提供您如何在代码中使用
displayNewMessage
。整个响应将延迟几秒钟,但随后将全部推送到适配器。这不是真实的聊天