gpt4 book ai didi

java - 如何从 fragment 中的工具栏在 ListView 中搜索

转载 作者:行者123 更新时间:2023-12-02 03:08:04 25 4
gpt4 key购买 nike

我使用此代码从 ListView 中的 MainActivity 工具栏进行搜索:

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

MenuItem myActionMenuItem = menu.findItem( R.id.action_search);
searchView = (SearchView) myActionMenuItem.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
adapter.getFilter().filter(s);
return false;
}
});
return true;

}

但是现在我将 ListView 移动到了 fragment ,如何将适配器从 fragment 传递到主 Activity ?如何更新打字?除了通过适配器还有什么更好的方法吗?预先感谢您

最佳答案

更好的方法可以使用 EventBus 。在我们必须将某些数据从 Activity 传递到 Fragment 的场景中,它确实很有帮助。

要使用EventBus,您需要定义POJO类,有点像这样:

class SearchQueryEvent {
String query;

public SearchQueryEvent(String query) {
this.query=query;
}

public String getQuery() {
return query;
}
}

现在,您的代码应该像这样修改:

MainActivity.java

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

MenuItem myActionMenuItem = menu.findItem( R.id.action_search);
searchView = (SearchView) myActionMenuItem.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
EventBus.getDefault().post(new SearchQueryEvent(s));
return false;
}
});
return true;

}

YourFragment.java

@Override
public void onResume() {
super.onResume();
EventBus.getDefault().register(this);
}

@Override
public void onPause() {
EventBus.getDefault().unregister(this);
super.onPause();
}

@Subscribe(threadMode = ThreadMode.MAIN)
public void onSearchQuery(SearchQueryEvent event) {
String query=event.getQuery();
adapter.getFilter().filter(query);
}

关于java - 如何从 fragment 中的工具栏在 ListView 中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41454596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com