【问题标题】:Filter Results of Search View in the Listview过滤列表视图中搜索视图的结果
【发布时间】:2016-03-25 10:23:17
【问题描述】:

我的操作栏中有一个 SerchView 功能。它工作正常。它从我创建的数据库中获取信息。但是,我尝试过滤结果为ListView 而不是PopupDropDown。有些不对劲。这是我下面的代码。

public class SearchViewNaListview extends Activity implements OnQueryTextListener {



public static final String PREFS_NAME = "MyPrefsFile1";
private ListView mListView;

ArrayList<WordDefinition> allWordDefinitions=new ArrayList<WordDefinition>();


DictionaryDatabase DictionaryDatabase;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);



    mListView = (ListView) findViewById(R.id.list);
    mListView.setAdapter(new ArrayAdapter <WordDefinition>(getApplicationContext(),android.R.layout.simple_list_item_1,allWordDefinitions));
    mListView.setTextFilterEnabled(true);



    DictionaryDatabase=new DictionaryDatabase(this); 
    allWordDefinitions=DictionaryDatabase.getAllWords(); 




    Collections.sort(allWordDefinitions, new CustomComparator());   


}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
 // Inflate the menu; this adds items to the action bar if it is present.
 getMenuInflater().inflate(R.menu.main, menu);
 SearchManager searchManager = (SearchManager) getSystemService( Context.SEARCH_SERVICE );
       SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();

       searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
       searchView.setSubmitButtonEnabled(true);
       searchView.setOnQueryTextListener(this);

       return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onQueryTextChange(String newText)
{
 // this is your adapter that will be filtered
     if (TextUtils.isEmpty(newText))
     {
           mListView.clearTextFilter();
       }
     else
     {
           mListView.setFilterText(newText.toString());
       }

     return true;
}

@Override
public boolean onQueryTextSubmit(String query) {
 // TODO Auto-generated method stub
 return false;
}


public class CustomComparator implements Comparator<WordDefinition> { // Para Listar em Ordem Alfabética ListView
       @Override
       public int compare(WordDefinition p1, WordDefinition p2) {
          return p1.word.compareToIgnoreCase(p2.word);
       }
    }
 }

【问题讨论】:

    标签: android database listview searchview


    【解决方案1】:

    您的Adapter 是否实现Filterable 接口?见setTextFilterEnabled

    【讨论】:

    • 是的,确实如此!我已经实现了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多