2016-05-06 2 views
-1

こんにちは。私はJavaプログラミングでは新しく、問題に直面しました。私はSQLiteデータベースを使ってプログラムを作った。追加機能と削除機能を備えたシンプルなプログラムです。今では、検索/フィルタ機能を追加したいと思い、searchViewの使用について考えます。私は、チュートリアルを踏襲し、setOnQueryTextListener内でこのコードを使用:SQLite SearchViewがデータを正しくフィルタリングしていません

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
      @Override 
      public boolean onQueryTextSubmit(String text) { 
       return false; 
      } 

      @Override 
      public boolean onQueryTextChange(String text) { 
       adapter.getFilter().filter(text); 
       return false; 
      } 
     }); 

しかし、私はこのコードを使用する場合、それは要素をフィルタが、一度この方法で検索した後、私は、データベースへの任意の複数の項目を追加することができないか、それからそれらを削除します。名前付きリストビューしかありません。おそらく誰かがこのコードを修正する方法を知っていますか?たぶん私は他のコードを使用する必要がありますか?私はそれが働く必要がある...あなたの答えのためにたくさんありがとう!

+0

のための私のコードを参照してくださいが、リストがフィルタリングされているので、あなたはそれらを見ることができません。アイテムを追加または削除しようとすると 'searchView.setText(" ")'を設定してみてください。 –

+0

私はアイテムを見ることができます、すべてが良いです、一度フィルターをかけると、名前のリストがすべて表示されますが、それ以上のアイテムを追加することはできません。 –

答えて

0

あなたの投稿で私が理解しているところに答えるだけです。

アイテムを追加または削除した後で変更を確認するには、アイテムが変更されたことをアダプタに通知する必要があります。つまり、このコードを追加する必要があります。

adapter.notifyDataSetChanged();

lv.setAdapter(adapter);

データを表示するためにarraylistを使用している場合、arralistもこのようにクリアする必要があります。

planlist.clear();

はアイテムが追加されるかもしれませご参照

SearchView.OnQueryTextListener textChangeListener = new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextChange(String newText) { 

      planlist.clear(); 
      planlist = db.getplanlist(newText); 
      adapter = new PlansAdapter(PlansActivity.this, planlist); 
      adapter.notifyDataSetChanged(); 
      lv.setAdapter(adapter); 

      return true; 
     } 

     @Override 
     public boolean onQueryTextSubmit(String newText) { 

      return true; 
     } 
    }; 
関連する問題