0

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

在中设置 SearchViewMainActivity.class

@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 中搜索我的项目?还是有完全不同但更好的方法,该怎么做?

提前致谢

4

1 回答 1

0

在该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.
}
于 2014-09-20T06:04:09.163 回答