标签: searchview

将 ActionBar 搜索查询传递给片段

这是我看到的 a SHERLOCK FRAGMENT ACTIVITY,其中包含 4FRAGMENTS和 a SEARCH VIEW。有 4 个片段,其中最后一个是FRAGMENT SEARCH RESULTS

我的问题是如何将搜索查询的数据传递到FRAGMENT SEARCH RESULTS搜索视图并在其中显示搜索结果FRAGMENT SEARCH RESULTS

我实现了这个

private void setupSearchView(MenuItem searchItem) {
        if (isAlwaysExpanded()) {
            mSearchView.setIconifiedByDefault(false);
        } else {
            searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
        }
        mSearchView.setOnQueryTextListener(this);
    }

    public boolean onClose() {
        return false;
    }

    protected boolean isAlwaysExpanded() {
        return false;
    }

    @Override
    public boolean onQueryTextSubmit(String query) {
        if (query.length() > 0) {
            **//WHAT SHOULD I WRITE HERE**
        }
        return false;
    }

    @Override …
Run Code Online (Sandbox Code Playgroud)

android android-fragments searchview android-fragmentactivity

5
推荐指数
1
解决办法
8092
查看次数

当用户按下工具栏中的后退图标时,如何关闭键盘?

我尝试通过我的代码显示键盘,因为 closeListener 和 onExpandListener 不起作用。我在哪里失败了?当用户按下工具栏的后退按钮时可以调用一个方法吗?

后工具栏按钮的图像 --> https://i.stack.imgur.com/hDZlu.jpg

这是我的java代码;具有搜索视图的类:

public class MainActivity extends ActionBarActivity {

SearchView searchView = null;


@Override
protected void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.activity_main);
    super.onCreate(savedInstanceState);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

    //Title and subtitle
    toolbar.setTitle("Magazzino Chimica");

    setSupportActionBar(toolbar);

    Intent intent = getIntent();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main,menu);

    // Associate searchable configuration with the SearchView
    final SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    searchView = (SearchView) menu.findItem(R.id.action_search)
            .getActionView();
    searchView.setSearchableInfo(searchManager
            .getSearchableInfo(getComponentName()));

    searchView.setIconifiedByDefault(false);

    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) { …
Run Code Online (Sandbox Code Playgroud)

keyboard android view listener searchview

5
推荐指数
1
解决办法
1627
查看次数

Firebase Android SearchView 按值

我一直在搜索如何通过 vaule 在 firebase 中搜索,但我无法得到完整的答案,所以我现在问......

我使用了这个方法,但无法得到正确的结果:

我需要按“用户名”搜索。

这是我的数据库:

在此输入图像描述

mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                @Override
                public boolean onQueryTextSubmit(String query) {
                    return false;
                }

                @Override
                public boolean onQueryTextChange(String newText) {

                    mQuery = mDatabase.orderByChild("Username");


                    return false;
                }
            });
Run Code Online (Sandbox Code Playgroud)

而且我也用过:

mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                @Override
                public boolean onQueryTextSubmit(String query) {
                    return false;
                }

                @Override
                public boolean onQueryTextChange(String newText) {

                    mQuery = mDatabase.orderByChild("Username").equalTo(newText)


                    return false;
                }
            });
Run Code Online (Sandbox Code Playgroud)

但我不能,所以有人可以给我完全正确的答案吗


感谢 AtaerCaner 帮助我,也感谢你尽可能地帮助我,但我仍然没有从搜索视图中得到任何结果,所以我将给出我的类中的方法:

mDatabase.addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(final DataSnapshot dataSnapshot, String s) {
                    mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                        @Override
                        public …
Run Code Online (Sandbox Code Playgroud)

android firebase searchview firebase-realtime-database

5
推荐指数
1
解决办法
8071
查看次数

等到用户停止输入后再在 searchview 中执行大量搜索

搜索是我的应用程序的核心,我需要它才能正常工作。现在我有一个SearchView。我需要内联显示结果,因此我使用此代码。

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            srl.setVisibility(View.GONE);
            return false;
        }

        @Override
        public boolean onQueryTextChange(String query) {
            currentQuery = query;
            if (query.length()>= 3) {
                searchFor(currentQuery);
            } else {
                srl.setVisibility(View.GONE);
            }
            return false;
        }
    });
Run Code Online (Sandbox Code Playgroud)

问题可能很明显。因为我使用 firebase,我的searchFor()函数相当重,我不需要对每个字母都执行它。这不仅会破坏用户体验,如果您写下较长的单词,有时还会使我的应用程序崩溃。

我想要的是当用户停止打字时进行搜索。我想我需要一个处理程序,将其延迟一秒,然后每次按下字母键时取消该处理程序并设置一个新的处理程序。这在理论上是有道理的。我只是无法自己为 searchView 实现这一点。

帮助将不胜感激!

android android-view searchview rx-java rx-java2

5
推荐指数
1
解决办法
2576
查看次数

从活动返回后,错误 lateinit 属性适配器尚未初始化

我对这段代码有问题。添加 SearchView 的代码后,每次我点击一个元素进入 StoreActivity,当我回来时我收到错误

kotlin.UninitializedPropertyAccessException:lateinit 属性适配器尚未初始化

排上

适配器过滤器过滤器(新文本)

我该如何解决这个错误?我不明白...

class HomeFragment : BaseFragment() {

    private lateinit var adapter: MyStoreRecyclerViewAdapter
    private var stores: List<StoreRealm> = ArrayList()

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

        return inflater.inflate(R.layout.fragment_home, container, false)
    }

    override fun onResume() {
        super.onResume()
        setHasOptionsMenu(true)

        if (isAdded) {
            val systemService = this.context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
            BLocationManager(this.context).getLocation {
                loadHome()
                if (!systemService.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
                    showEnableGpsDialog()
                } else {
                    gpsWarning.visibility = View.GONE
                }
            }
        }
    }

    override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
        inflater?.inflate(R.menu.search_store, …
Run Code Online (Sandbox Code Playgroud)

adapter kotlin searchview

5
推荐指数
1
解决办法
9935
查看次数

使用Livedata时如何为RecyclerView使用Filter SearchView?

我有一个RecyclerView。我想用 SearchView 让它可以过滤。我的应用程序基于Android Architecture Components.

我创建了一个过滤方法searchView。当我搜索某些内容时,它可以工作,但是当我清除其中的文本时searchView,列表不会更改,并且仍然显示搜索数据。

活动:

    private StudentAdapter mAdapter;

    mAdapter = new StudentAdapter(this);
    recyclerView.setAdapter(mAdapter);

    //ViewModel
    StudentViewModelFactory factory = new StudentViewModelFactory(mDb, mClassId);
    StudentViewModel viewModel = ViewModelProviders.of(this, factory).get(StudentViewModel.class);
    viewModel.getStudentEntries().observe(this, studentEntries -> mAdapter.setStudents(studentEntries));

    //SearchView
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){
    @Override
    public boolean onQueryTextSubmit(String query){
            return false;
    }

    @Override
    public boolean onQueryTextChange(String newText){
            mAdapter.getFilter().filter(newText);
            return false;
    }
    });
Run Code Online (Sandbox Code Playgroud)

适配器:

public class StudentAdapter extends RecyclerView.Adapter<StudentAdapter.itemHolder> {

    private List<StudentEntry> mStudentEntries;
    private List<StudentEntry> filteredStudentEntries;

    public StudentAdapter(Context context) {
        this.context = context; …
Run Code Online (Sandbox Code Playgroud)

android searchview android-recyclerview android-livedata android-viewmodel

5
推荐指数
1
解决办法
2173
查看次数

Android EditText 和 SearchView:主要区别是什么(设计除外)?

我需要在我的 Android 应用程序中实现一个搜索界面,该界面可以RecyclerView过滤ViewPager.

我已经实现了EditTextSearchView小部件并尝试查看差异。

我感兴趣的听众是:

   myEditText.addTextChangedListener(new TextWatcher() {

            public void afterTextChanged(Editable s) {}

            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

            public void onTextChanged(CharSequence s, int start, int before, int count) {}
        });
Run Code Online (Sandbox Code Playgroud)

和 :

mySearchView.OnQueryTextListener() {
    @Override
    public boolean onQueryTextChange(String newText) {

        textView.setText(newText);
        return true;
    }

    @Override
    public boolean onQueryTextSubmit(String query) {
        textView.setText(query);
        return true;
    }
Run Code Online (Sandbox Code Playgroud)
  1. SearchView我是否缺少一些允许和不允许的重要功能EditText

  2. 有了这两个小部件,我可以使用单个“搜索视图”RecyclerView在内部进行搜索吗?ViewPager

我不想要一个ACTION_SEARCH或任何添加的搜索对话框视图。

提前致谢 …

android android-edittext android-viewpager searchview android-recyclerview

5
推荐指数
1
解决办法
5389
查看次数

如何在 AndroidX 中更改 Android SearchView 的文本颜色或查询提示文本颜色?

Android searchview 有默认的 queryhint textcolor 和 text color 。我们如何使用 AndroidX 更改 Android Searchview 中 edittext 的文本颜色

android kotlin searchview androidx

5
推荐指数
1
解决办法
776
查看次数

应该使用 androidx.appcompat.widget.SearchView 还是 android.widget.SearchView?

我很困惑我应该使用哪个版本SearchView。文档androidx.appcompat.widget.SearchView明确指出

如果您仅针对 API 级别 11 及更高版本开发应用程序,则应使用框架android.widget.SearchView类。

然而,我无法完全想象这是真的或一个好主意,因为例如android.widget.SearchViewAPI 级别 11 可能与 API 级别 29 不同。那么,任何人都知道为什么官方文档建议使用android.widget.SearchView而不是androidx.appcompat.widget.SearchView

android searchview android-search androidx

5
推荐指数
0
解决办法
1313
查看次数

错误:膨胀类 androidx.appcompat.widget.SearchView 时出错

希望你们一切都好。我正在开发一个Android应用程序,该应用程序使用searchview从Firebase关系数据库medications info db中搜索数据,在我打开包含SearchView的活动后,应用程序崩溃,经过调试后我得到了这个:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.projetfe, PID: 26491
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.projetfe/com.example.projetfe.MedicamentActivity}: android.view.InflateException: Binary XML file line #27: Binary XML file line #27: Error inflating class androidx.appcompat.widget.SearchView
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3114)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3257)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1948)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7050)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
     Caused by: android.view.InflateException: Binary XML file line #27: Binary XML file line #27: Error inflating class androidx.appcompat.widget.SearchView
     Caused by: android.view.InflateException: Binary XML file …
Run Code Online (Sandbox Code Playgroud)

android searchview android-debug

5
推荐指数
1
解决办法
1363
查看次数