【问题标题】:Adding 2 Arraylists to 1 Recyclerview将 2 个 Arraylists 添加到 1 个 Recyclerview
【发布时间】:2018-12-20 07:36:12
【问题描述】:
private List<SQLiteHelper> messages = new ArrayList<>();

    mAdapter = new MessagesAdapter(messages);
    messageList.setAdapter(mAdapter);
    mAdapter.notifyDataSetChanged();

onStart

 while (csr.moveToNext()) {
                    String mSender = csr.getString(csr.getColumnIndex(KEY_SENDER));
                    String mMessage = csr.getString(csr.getColumnIndex(KEY_MESSAGE));
                    long mTime = csr.getLong(csr.getColumnIndex(KEY_TIME));
                    String mSeen = csr.getString(csr.getColumnIndex(KEY_SEEN));
                    String mTimer = csr.getString(csr.getColumnIndex(KEY_TIMER));
                    String mType = csr.getString(csr.getColumnIndex(KEY_TYPE));

                    messages.add(new SQLiteHelper(mSender, mMessage, mType, mSeen, mTimer, mTime));
                }

onCreate

    FirebaseRecyclerOptions<SQLiteHelper> options =
            new FirebaseRecyclerOptions.Builder<SQLiteHelper>()
                    .setQuery(mFetchingMessages, SQLiteHelper.class)
                    .build();

    firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<SQLiteHelper, Chat.MessagesViewHolder>(options) {

            final DatabaseReference mTimeReference = FirebaseDatabase.getInstance().getReference().child("Messages").child(MessageSenderId).child(MessageRecieverId);
            Query messageQuery = mTimeReference.limitToLast(10);

            messageQuery.addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {

                    for (DataSnapshot ds : dataSnapshot.getChildren()) {
                        SQLiteHelper message = dataSnapshot.getValue(SQLiteHelper.class);



                        messages.add(message);
                        messageList.scrollToPosition(messagesList.size() - 1);
                    }
                }

我刚刚包含了主要部分。两个 Arraylist 都使用相同的 Helper 类。一个是从 firebase 获取数据的 firebaserecycleradapter,另一个是从 fSQLitelite 获取数据。仅显示 firebase 数据,而不显示 SQLite。有人可以帮我解决这个问题,以便 SQLite 数据显示在顶部和下面的 firebase 中吗?我哪里错了

表和数据存在

【问题讨论】:

  • 首先检查从数据库中填充数据时列表的大小是多少?
  • 列表大小不为空@Piyush

标签: java android database sqlite firebase


【解决方案1】:

在您的适配器中实现此方法以在数据列表的开头添加元素:

这是适配器内的数据列表:

private List<SQLiteHelper> data = new ArrayList<>();

使用它来将新项目列表添加到适配器数据列表:

public void addList(List<SQLiteHelper> newMessages) {

    data.addAll(0, newMessages);

    notifyDataSetChanged();
}

使用它向适配器数据列表添加一个新元素:

public void addElement(SQLiteHelper newMessage) {

    data.add(0, newMessage);

    notifyDataSetChanged(); 
}

这两种方法都将新元素添加到适配器列表的顶部。

【讨论】:

  • 我应该在哪里调用这个方法
  • 为示例添加了新方法。在需要向适配器添加新元素的地方使用 then 之一。
  • 不,我想你完全弄错了...... sqlite 数据不会受到影响,因为它不会再次添加...... sqlite 中有一些数据,我只想告诉他们全部
猜你喜欢
  • 1970-01-01
  • 2020-08-21
  • 2016-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多