【问题标题】:how to implement search view on FirebaserecyclerviewAdapter with oncreatoptions menu?如何使用 oncreatoptions 菜单在 FirebaserecyclerviewAdapter 上实现搜索视图?
【发布时间】:2021-01-05 04:26:46
【问题描述】:

我知道我们必须执行 orderbyChild(_) 并开始 At 和 End At,但是我将选项传递给适配器,对如何在我的项目中使用此查询感到困惑

下面是选项

  savedInstanceState: Bundle?): View? {

    val view : View = inflater.inflate(R.layout.randomeinfo, container, false)

    rc_listing  = view.rc_list
    rc_listing.layoutManager = LinearLayoutManager(activity, RecyclerView.VERTICAL , false)
    var options : FirebaseRecyclerOptions<Data?> = FirebaseRecyclerOptions.Builder<Data>()
        .setQuery(db, Data::class.java)
        .build()

    mAdapter = Rand_Adapter(options)
    rc_listing.adapter = mAdapter

    return view

这将进入我的适配器,并且在我使用 oncreatptionmenu 的同一片段中

 override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
    inflater.inflate(R.menu.mainmenu, menu)
    val searchItem = menu.findItem(R.id.actionsearch)
    val searchView = searchItem.actionView as androidx.appcompat.widget.SearchView
    searchView.imeOptions = EditorInfo.IME_ACTION_DONE
    searchView.setOnQueryTextListener(object : androidx.appcompat.widget.SearchView.OnQueryTextListener {
        override fun onQueryTextSubmit(query: String): Boolean {
            return false
        }
        override fun onQueryTextChange(newText: String): Boolean {

          //here what shall i pass 
         

            return false
        }
    })
}

这是否意味着我必须再创建一个数组列表,我真的很困惑,在互联网上我找到了名为 Elasticsearch 的解决方案,但我认为这不是唯一的选择。

【问题讨论】:

    标签: android firebase firebase-realtime-database searchview


    【解决方案1】:

    query listener 设置为SearchView 后,获取查询并执行filter 搜索以显示必须呈现给用户的任何数据。 您可以在另一个活动中显示和过滤结果,或者如果活动为空,则显示一个。 如果我们假设在另一个活动中执行此操作,则需要查询并处理一个意图,就像这样。

            searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                @Override
                public boolean onQueryTextSubmit(String query) {
                    handleIntent(query);
                    return true;
                }
    
                @Override
                public boolean onQueryTextChange(String query) {
                    return false;
                }
            });
    
        private void handleIntent(String query) {
            Intent intent = new Intent(MainActivity.this, SearchActivity.class);
            intent.putExtra(SearchActivity.INTENT_EXTRA_QUERY_STRING, query);
            startActivity(intent);
        }
    

    在 SearchActivity 中:

    public static final String INTENT_EXTRA_QUERY_STRING = "SEARCH_QUERY";
    

    从我们在onCreate() 收到的意图中获取查询

    String result = getIntent().getStringExtra(INTENT_EXTRA_QUERY_STRING);
    // Create new function
    performFilter(query)
    

    现在您有了查询并创建操作或任务来过滤您的数据并生成新列表。

    例子:

        List<String> filteredList = new ArrayList<>();
    
        private void performFilter(String result) {
            String[] stringList = {"One", "Two", "Three"};
            for (String currentItem : stringList) {
                if (currentItem.toLowerCase().trim().contains(result)) {
                    filteredList.add(currentItem);
                }
            }
        }
    

    这可能不完全适合您的情况,因此请作为参考。

    【讨论】:

      猜你喜欢
      • 2016-03-10
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多