gpt4 book ai didi

java - 实时从 Sqlite 向 recyclerView 添加数据?

转载 作者:可可西里 更新时间:2023-11-01 02:50:34 27 4
gpt4 key购买 nike

我制作了一个应用程序,它从 TCP 客户端接收一些数据到我的 TCP 服务器,并将数据存储在 SQlite DB ,实际上我已经创建了一个 recyclerView 来可视化所有数据,但现在我的问题是我正在尝试的,大约需要 2 周时间来刷新 recyclerView 实时,我的意思是如果 TCP 客户端 将向我的 TCP 服务器 发送一个新包并且如果我正在与 recyclerView 必须动态添加数据。
我也会接受关于如何改进我的应用程序的任何类型的提示和建议。实际上,这是我在 Android 中创建的第一个应用。

HERE你可以找到我的Server(TCPServer),RecyclerViewAdapter,Adapter(constructor),allert.java(class where我调用 RecyclerViewAdapter

希望有人能够帮助我,我将不胜感激。

最佳答案

尝试发送广播方法。以下是步骤:

  1. 在您的 Activity 中创建一个扩展 BroadcastReceiver 的内部类。

    private class ExampleBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
    //do stuffs here, e.g. getting extras from intent
    }
  2. 在任何方法之外声明类的实例。

    public class MainActivity extends AppCompatActivity {

    private ExampleBroadcastReceiver exampleBroadcastReceiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    //stuffs
    }

    }
  3. 重写 onResume 方法。初始化您刚刚在此方法中创建的实例。然后,用 intent-filter 注册它。这将确保您的广播接收器在用户打开 Activity 时准备就绪。

    @Override
    protected void onResume() {
    super.onResume();
    IntentFilter filter = new IntentFilter();
    filter.addAction("com.example.MainActivity");
    exampleBroadcastReceiver = new ExampleBroadcastReceiver();
    LocalBroadcastManager.getInstance(this).registerReceiver(exampleBroadcastReceiver, filter);
    }
  4. 覆盖 onPause 方法并取消注册您的接收器。

     @Override
    protected void onPause() {
    super.onPause();
    try {
    LocalBroadcastManager.getInstance(this).unregisterReceiver(exampleBroadcastReceiver);
    } catch (IllegalArgumentException e) {
    if (!e.getMessage().contains("Receiver not registered")) {
    // unexpected, re-throw
    throw e;

    }
  5. 确保对动态数据使用 ArrayList。

  6. 每当您从服务器接收到数据,将它们存储在数据库中后,发送一个带有额外内容的广播,其中包含您要在 Activity 中显示的数据。

已编辑

我使用 LocalBroadcastManager 的实例注册了接收器。

关于java - 实时从 Sqlite 向 recyclerView 添加数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45239643/

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