簡體   English   中英

將2個數組列表添加到1個Recyclerview

[英]Adding 2 Arraylists to 1 Recyclerview

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類。 一個是firebaserecycleradapter,它從firebase獲取數據,另一個是fSQLitelite獲取數據。 僅顯示Firebase數據,而不顯示SQLite。 有人可以幫我這個問題,以便將SQLite數據顯示在頂部並在其下面顯示Firebase嗎? 我哪里出問題了

該表和數據存在

在您的適配器中實現此方法,以在數據列表的開頭添加元素:

這是適配器內的數據列表:

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

使用此命令將新項目列表添加到適配器dataList:

public void addList(List<SQLiteHelper> newMessages) {

    data.addAll(0, newMessages);

    notifyDataSetChanged();
}

使用它向適配器數據列表添加一個新元素:

public void addElement(SQLiteHelper newMessage) {

    data.add(0, newMessage);

    notifyDataSetChanged(); 
}

這兩種方法都將新元素添加到適配器列表的頂部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM