android - 如何在 android 中使用套接字从 REST Api 获取 JSON 响应以动态膨胀 recyclerview?

标签 android laravel sockets android-recyclerview socket.io

我正在开发一个 Android 应用程序,用于创建一个特定用户组之间的交流论坛。我使用 PHP Laravel 作为我的后端,并通过 API 调用进行交流。
我使用 REST API 调用将数据发布到我的服务器并接收发布的对话并使用 recyclerview 对其进行扩充。
一切正常,但我想要的是在使用新数据更新数据库时动态更新 recyclerview 数据,以便用户无需刷新页面即可查看新数据。
基本上我不想每次都调用 API 来膨胀 recyclerview。

在浏览时,我得到一些使用 Socket 的提示,因为我们可以保持连接打开,这与在响应后终止的 HTTP REST API 调用不同
但我不知道如何将 Socket 与 REST API 调用结合起来。

最佳答案

我通过使用 Firebase 而不是 Socket 得到了我想要的东西。
我遵循了这些步骤。

  1. 我将数据从 Laravel 后端发布到 Firebase 数据库,就像 How to post data to firebase using PHP? 中的答案一样 .
  2. 我使用这组代码在我的 android 应用程序中获取了该数据

    progressDialog.setMessage("Loading...");
    showDialog();
    databaseReference.child("root_id").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) 
     {
            forumlist.clear();               
            int l = (int) dataSnapshot.child(msgid).getChildrenCount();               
            for(DataSnapshot uniqueKeySnapshot : dataSnapshot.child(msgid).getChildren()){
               ForumSubData subData = uniqueKeySnapshot.getValue(ForumSubData.class);
                forumlist.add(subData);
            }
                recyclerView.setAdapter(mAdapter);
                mAdapter.notifyDataSetChanged();
        }
            hideDialog();
        }
    
        @Override
        public void onCancelled(DatabaseError databaseError) {
            hideDialog();
        }
    });
    

关于android - 如何在 android 中使用套接字从 REST Api 获取 JSON 响应以动态膨胀 recyclerview?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50136287/

相关文章:

java - 如何获取最新的文件添加到Android手机

php - Laravel 与 Symfony |模型属性

laravel - 通过SSL协议(protocol)发送邮件(非加密)-Laravel

Java Serversocket不接受连接

java - C中的TCP服务器,Socket仍然为负

java - 减少数组的大小(通过创建新数组) - arrayList 是如何做到的?

java - 在 Android Studio 中创建可变 ArrayList 以保存输入文本

java - 将现有 Java 和 Flash 应用程序迁移到 Android (Google TV)

php - Laravel 错误:方法 Illuminate\View\View::__toString() 不能抛出异常

C# UDP 套接字绑定(bind)异常