【问题标题】:Android: Search through ListView objects via SearchViewAndroid:通过 SearchView 搜索 ListView 对象
【发布时间】:2014-02-02 18:27:41
【问题描述】:

我想通过ActionBar 中的SearchView 将搜索功能添加到我的应用程序中 - 我有带有一些对象的ListView。提交搜索后,我想显示搜索查询中包含的数据,以显示在 ListView 的另一个活动中。我使用Parse.com 框架来存储数据。我遵循this 简单教程,但我知道它不是用于搜索ListView 项目,而是搜索全球项目 - 下载的应用程序等。

MainActivity.class中设置SearchView

@Override
        public boolean onCreateOptionsMenu(Menu menu) {


            getMenuInflater().inflate(R.menu.main, menu);
            MenuItem searchItem = menu.findItem(R.id.action_search);
            mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);
            setupSearchView(searchItem);
            return true;
        }

     private void setupSearchView(MenuItem searchItem) {
         SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
            if (searchManager != null) {
                List<SearchableInfo> searchables = searchManager.getSearchablesInGlobalSearch();

                SearchableInfo info = searchManager.getSearchableInfo(getComponentName());
                for (SearchableInfo inf : searchables) {
                    if (inf.getSuggestAuthority() != null
                            && inf.getSuggestAuthority().startsWith("applications")) {
                        info = inf;
                    }
                }
                mSearchView.setSearchableInfo(info);
            }

            mSearchView.setOnQueryTextListener(this);
        }
 @Override
    public boolean onQueryTextChange(String arg0) {
        return false;
    }



    @Override
    public boolean onQueryTextSubmit(String arg0) {
        Toast.makeText(getBaseContext(), "submited", Toast.LENGTH_SHORT).show();
        return false;
    }

我的 Animal.class - getter 和 setter(查看 //note):

@ParseClassName("Animal")
public class Animal extends ParseObject{

    public Animal(){

      }

      public String getAnimal(){    //I want to search by these objects
          return getString("animal");
      }

      public void setAnimal(String animal){
          put("animal", animal);
      }

      public String getArea(){
          return getString("area");
      }

      public void setArea(String area){
          put("area", area);
      }

      public String getImgUrl(){
          return getString("imgUrl");
      }

      public void setImgUrl(String imgUrl){
          put("imgUrl", imgUrl);
      }

      public String getAbout(){
          return getString("about");
      }

      public void setAbout(String about){
          put("about", about);
      }



}

您知道,是否有某种方法可以自定义它以在 ListView 中搜索我的项目?还是有完全不同但更好的方法,该怎么做?

提前致谢

【问题讨论】:

  • 您之前删除并重新发布了同样的问题?
  • 是的,我必须这样做。标题不太准确,重命名似乎没用。抱歉这种尴尬的行为..

标签: android android-listview android-actionbar parse-platform android-search


【解决方案1】:

onQueryTextSubmit(String query) 方法中,通过查询重置您的适配器过滤中的数据。如果您正在使用加载程序,最好通过重新启动加载程序并将查询字符串作为参数传递到包中来完成。

@Override
public boolean onQueryTextSubmit(String query) {
    Bundle args = new Bundle();
    args.putString(ARG_QUERY, query);
    getLoaderManager().restartLoader(LOADER_ID, args, this);
    return true; // Prevent the search view from sending search intent.
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 2013-02-10
    相关资源
    最近更新 更多