gpt4 book ai didi

android - 当 fragment 中存在 ListView 时,如何在 Activity (操作栏)中实现搜索 View

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:03:11 26 4
gpt4 key购买 nike

我正在开发一个应用程序,其中 searchview 位于主要 Activity 的操作栏中。在主要 Activity 中有 3 个 fragment 。每个 fragment 中都有一个 ListView 。问题是当 searchview 在 Activity 的操作栏中实现时,如何对 fragment 的列表项进行排序。

我正在使用简单的游标适配器和具有自定义行的 ListView ,其中有 TextView 和 ImageView 。

enter image description here

这是activity中searchview的代码

SearchManager SManager =  (SearchManager) getSystemService(Context.SEARCH_SERVICE);
MenuItem searchMenuItem = menu.findItem(R.id.action_search);
android.support.v7.widget.SearchView searchViewAction = (android.support.v7.widget.SearchView) MenuItemCompat.getActionView(searchMenuItem);
searchViewAction.setSearchableInfo(SManager.getSearchableInfo(getComponentName()));

searchViewAction.setIconifiedByDefault(true);

android.support.v7.widget.SearchView.OnQueryTextListener textChangeListener = new android.support.v7.widget.SearchView.OnQueryTextListener()
{
@Override
public boolean onQueryTextChange(String newText)
{
// this is your adapter that will be filtered
adapter.getFilter().filter(newText);
System.out.println("on text chnge text: "+newText);
return true;
}
@Override
public boolean onQueryTextSubmit(String query)
{
// this is your adapter that will be filtered
adapter.getFilter().filter(query);
System.out.println("on query submit: "+query);
return true;
}
};
searchViewAction.setOnQueryTextListener(textChangeListener);

fragment 的代码是

Cursor mCursor = getContacts();
getActivity().startManagingCursor(mCursor);



c_adapter = new SimpleCursorAdapter(getActivity(), R.layout.contact_item, mCursor,
new String[]{ContactsContract.Contacts.DISPLAY_NAME
, ContactsContract.Contacts.PHOTO_THUMBNAIL_URI, ContactsContract.Contacts._ID},

new int[]{R.id.username1, R.id.ivuserpicicon1});



if (c_adapter.getCount() == 0) {
Toast.makeText(getActivity(), "No Items Available", Toast.LENGTH_SHORT).show();
}

listview = (ListView) view.findViewById(R.id.listview);
listview.setAdapter(c_adapter);
listview.setTextFilterEnabled(true);

如何实现搜索 View 。我几乎不需要指导。

最佳答案

与 fragment 到 Activity 的通信相比, fragment 到 fragment 的通信相当简单。您可以查看以下链接以了解这两种通信类型

http://developer.android.com/training/basics/fragments/communicating.html#Deliver

在您的 Activity 中,您可以获得包含 ListView 的 fragment 实例并调用所有搜索和排序操作。

假设你已经添加了

android:actionViewClass="android.widget.SearchView"

对于菜单布局文件中的搜索菜单项,您可以在 Activity 的 onCreateOptionsMenu 中添加

MenuItem searchItem = menu.findItem(R.id.your_search_menu_item);
SearchView actionSearchView = (SearchView) searchItem.getActionView();

actionSearchView.setIconifiedByDefault(false);
actionSearchView.setOnQueryTextListener(//Set up your OnQueryTextListener here);

在 OnQueryTextListener 的 onQueryTextChange 方法中,您可以调用 fragment 方法进行搜索和排序。

关于android - 当 fragment 中存在 ListView 时,如何在 Activity (操作栏)中实现搜索 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29972651/

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