当前位置: 首页 > 知识库问答 >
问题:

如何在Android中的另一个屏幕上显示我过滤后的数据?

伯建安
2023-03-14

我正在开发一个应用程序,在我的home片段中,我有一个searchview,在它下面有一个recyclerview,我在那里显示所有数据,但是当用户使用searchview搜索任何数据时,我现在想将数据显示给另一个片段,我该如何实现呢??请指引我

首页片段搜索代码

  @Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    if (searchView != null) {
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {

                pd.setTitle("Searching");
                pd.show();

                Runnable progressRunnable = new Runnable() {

                    @Override
                    public void run() {
                        search(query);
                        pd.cancel();
                    }
                };

                Handler pdCanceller = new Handler();
                pdCanceller.postDelayed(progressRunnable, 3000);
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {


                if (newText.isEmpty())
                {
                    getData();
                }

                return false;
            }
        });
    }

    getDataCompleteData();
    
}



//SEARCH METHOD
private void search(String s) {

     mydatalist = new ArrayList<>();

    for (RecyclerviewModel object : datalist) {
        if (object.getSearching().contains(s.toLowerCase().trim())) {
            mydatalist.add(object);
        }

        RecyclerviewAdapter adapter = new RecyclerviewAdapter(mydatalist, getContext(), HomeFragment.this);
        recyclerView.setAdapter(adapter);

    }


}

这是我在主片段上搜索的代码,但此代码显示同一片段上的过滤(搜索数据),我希望当用户在SEARCHVIEW中输入查询时,搜索的数据应显示在新片段上。

共有1个答案

靳高明
2023-03-14

从你的要求来看,我无法理解你显示数据的实际方法。因为我理解这种方法,我也不知道这是否能满足你正在寻找的要求。

您可以使用捆绑包在片段之间传输数据。在用户搜索任何值后,您将从主数据列表中获得过滤列表,现在您可以使用下面的代码传递此过滤列表,以便在搜索函数中有mydatalist的情况下从搜索函数中获取过滤列表。请确保创建列表“可序列化”的数据类。

    Bundle bundle = new Bundle();
    bundle.putParcelableArrayList("list", mydatalist); 
    
    Fragment2 fragment2 = new Fragment2();
    fragment2.setArguments(bundle);
    
    getFragmentManager()
          .beginTransaction()
          .replace(<Your container id>, fragment2)
          .commit();

现在,在你的第二个片段中,获得如下代码所示的列表,并根据你的要求进行设置。

    Bundle bundle = this.getArguments();
    
    if(bundle != null){
         // handle your code here.
         <Your List Type> = listbundle.getParcelableArrayList("list");
    }
 类似资料:
  • 我似乎无法理解如何显示多个通知而不让一个覆盖另一个。在我的例子中,它一次只显示一个。图片1 我的目标是让它像图2下面的截图一样工作 分配给通知的代码块

  • 我尝试了很多在Android上处理多个平板电脑和手机屏幕的方法,但没有找到正确的方法。在某些情况下,我得到错误,有些不工作。我也贴了堆栈问题,但没有收到满意的结果。我想在平板电脑屏幕上同时显示列表和描述,而在移动屏幕上只显示列表。有什么好的和简单的方法来做这件事吗?我也试过这样做,但没能取得进球。

  • 问题内容: 如何从一个活动屏幕导航到另一个活动屏幕?在第一个屏幕中,我有一个按钮,如果我单击该按钮,则必须移至另一个“活动”屏幕。 问题答案:

  • 我必须在reactjs中从一个屏幕传递数据到另一个屏幕。并在接收端显示数据。 我用路由器在屏幕之间导航也传递数据,但不能显示接收到的数据。下面的代码是我传递数据的地方。 我试图在屏幕2中使用以下代码获得道具

  • 问题内容: 我正在使用PIL库进行一些图像编辑。关键是,我不想每次都将图像保存在HDD上以在资源管理器中查看它。是否有一个小模块可以使我设置窗口并显示图像? 问题答案: 从PIL教程中: 一旦有了 Image 类的实例,就可以使用该类定义的方法来处理和操纵图像。例如,让我们显示刚刚加载的图像: 更新: 如今,该方法已正式记录在PIL的Pillow分支中,并说明了如何在不同的OS上实现该方法。