首页 > 解决方案 > 如何在 Android Studio 中按下按钮时显示回收站视图?

问题描述

我正在尝试在我的应用程序中包含搜索功能。因此,当用户按下搜索按钮时,结果会显示在回收站视图中。但是当用户按下按钮时,会E/RecyclerView: No adapter attached; skipping layout弹出错误。在onCreate()方法中直接加载回收器没有错误。如何解决这个问题?活动代码为:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivitySearchBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        binding.searchButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               search_start();
            }
        });
    }
private void search_start(){
        binding.recyclerView.setLayoutManager(new LinearLayoutManager(this));
        binding.recyclerView.setHasFixedSize(true);

            PagedList.Config config = new PagedList.Config.Builder()
                    .setEnablePlaceholders(false)
                    .setPrefetchDistance(2)
                    .setPageSize(5)
                    .build();
            Query mQuery;
            mQuery = FirebaseFirestore.getInstance().collection("tests");
            FirestorePagingOptions<SearchItem> options = new FirestorePagingOptions.Builder<SearchItem>()
                    .setLifecycleOwner(this)
                    .setQuery(mQuery, config, SearchItem.class)
                    .build();
            adapter = new SearchAdapter(options);
            binding.recyclerView.setAdapter(adapter);
    }

标签: androidandroid-studioandroid-recyclerview

解决方案


只需在OnCreate()中设置适配器并在其中发送一个空列表

adapter = new SearchAdapter(options);
binding.recyclerView.setAdapter(adapter);

在您的适配器中创建一个 setList() 函数

void setList(FirestorePagingOptions<SearchItem> options){
    this.options = options;
}

并在搜索按钮 ClickListener() 上设置列表

adapter.setList(options)

推荐阅读