簡體   English   中英

如何在recyclerview的頂部顯示房間數據庫中的最后一項

[英]How to show the last item from room database at top in recyclerview

每當我向數據庫中添加新對象並嘗試使用Recyclerview顯示它們時,我都會從房間數據庫中提取數據,它們出現在recyclerview的底部,我沒有在recyclerview適配器中使用list的add(data,Position)函數作為它會在recyclerview中復制數據,例如,如果數據已經存在於recyclerview中,並且用戶嘗試使用搜索視圖再次對同一數據進行搜索,則它會被復制,同時我也嘗試使用layout-manager反轉列表,但是隨后滾動列表到recyclerview中的最后一個項目,我也嘗試過smoothscroll到位置0,但也不起作用。 如果數據庫中不存在數據,我將使用搜索視圖首先從數據庫中搜索數據,我通過API從服務器獲取數據,然后將其插入數據庫中,並通知recyclerview所做的更改一切正常,除了數據出現在底端

主要活動代碼

 private SearchView.OnQueryTextListener onQueryTextListener =
        new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                if (query.length() >= 3) {
                    getDealsFromDb(query);
                }
                return true;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                if (newText.length() >= 3) {
                    getDealsFromDb(newText);
                }
                return true;
            }

            private void getDealsFromDb(String searchText) {
                searchText = "%" + searchText + "%";
                final String finalSearchText = searchText;
                model.getDevicenames(searchText).observe(MainActivity.this, new Observer<List<MobileDataBaseObjectClass>>() {
                    @Override
                    public void onChanged(@Nullable List<MobileDataBaseObjectClass> mobileDataBaseObjectClasses) {
                        if (mobileDataBaseObjectClasses != null) {
                            if (mobileDataBaseObjectClasses.size() == 0) {
                                Log.i("Test", "Main Activity not found in database fetching from api: ");
                                model.insertSingleObject(finalSearchText);
                            } else {

                                mAdapter.setWords(mobileDataBaseObjectClasses);
                            }
                        }
                    }
                });

            }
        };

您必須將列表傳遞給適配器。 首先,您將從數據庫中獲得列表,該列表的排序方式類似於最后一個索引中的最后一項。 提取列表后,只需調用方法即可反轉列表。

List<DailyConsumption> mList = myDataBase.dailyConsumptionDao().findByDate(date);
Collections.reverse(mList); // inverses the list and shows last item at first index
// now pass this list to the adapter

暫無
暫無

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

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