2017-12-21 12 views
1

ListViewで提供されるgetCount()関数の問題が発生しています。私は、に表示される行の数をonQueryTextChange()メソッドでフィルタすると、SearchViewで提供される行の数を取得しようとしています。残念ながら、の数字は、常に1回の繰り返しでオフになります。たとえば、ListViewの4つの項目から開始し、ListViewに1つの項目しか含めることができないようにフィルターをかけると、getCount()関数は4を返します。その直後にフィルターを再設定すると、 1を取得します。onQueryTextChange()メソッドでListViewをフィルターにかけたときに、適切なgetCount()番号が与えられるように、どうすれば入手できますか?リストビューgetCount()メソッドを1回だけオフにします

+0

あなたはactualposList.sizeを(使用カント試してみてください)の代わりに同様にgetCountの? – ABDevelopers

+0

残念ながら、actualposListは私が作成したダイアログ内のチェックされた項目の位置を保持していません。 onQueryTextChangeが呼び出されたときにリストビューに表示される項目の数が必要です。 – topgun741

+0

試すことがあります。Method1 - フィルターを使用する代わりに、アダプターの内部でパブリックメソッドを使用します。 Method2 - あなたのアダプタとフィルタのpublishResults()にインターフェイスを作成し、あなたのactivity/fragmentを更新してください。[http://programandroidlistview.blogspot.com/]で配列サンプルのサンプルを見てください。それは助けて欲しい! –

答えて

0

clearFilterTextとsetFilterTextは何を行うことができますか?彼らはあなたが変更をアダプタ

+0

私は同じダイアログ内のlistViewをフィルタリングするためにダイアログ内でsearchViewを使用しています。ですから、 'clearFilterText()'はlistView内の項目のリスト全体を表示しますが、 'setFilterText(newText)'は渡されたnewTextに適合するリストビュー内の項目のみを表示します。 – topgun741

0

に反映されるようにadapter.notifyDataSetChangedを呼び出す必要がありますどのような方法でリストを変更した場合、この

@Override 
public boolean onQueryTextChange(String newText) { 
    if (TextUtils.isEmpty(newText)) { 
     listView.clearTextFilter(); 

     for (int i = 0; i < actualposList.size(); i++) { 
      listView.setItemChecked(actualposList.get(i), true); 
      Log.d("qqqq", String.valueOf(actualposList.get(i))); 
     } 

    } else { 

     listView.setFilterText(newText); 

     if (!actualposList.isEmpty()) { 
      for (int i = 0; i < list.size(); i++) { 
       //listView.setItemChecked(i, false); 
      } 
     } 
    } 
    sizeOfList = listView.getAdapter().getCount(); //changes based on the number of items in the listview....so changes when filtered 
    Toast.makeText(getActivity(), String.valueOf(sizeOfList), Toast.LENGTH_SHORT).show(); 


    return true; 
} 
+0

これを試みました。残念ながら同じ結果:( – topgun741

関連する問題