2012-01-18 17 views
0

私はかなりの文字列を持つ文字列配列(明らかに)を持っています。検索バーを上に置きたいと思います。 この文字配列はリストビューで出力されます。リスト内の文字列を検索し、検索結果と一致しない結果を非表示にして、検索したものと一致する項目のみを表示したいと考えています。アンドロイドの文字列配列を使って検索する

文字列配列を検索するコードを設定する方法がわかりません。

リストビュー

Resources res = getResources(); 
    ListView listView=(ListView)findViewById(R.id.list); 
    final String[] ids = res.getStringArray(R.array.idchart_array); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.test_list_item,ids); 
    listView.setAdapter(adapter); 

マイサーチコードのためのコード:

final EditText searchField = (EditText) findViewById(R.id.srcBox); 
Button searchButton = (Button) findViewById(R.id.srcBtn); 
searchButton.setOnClickListener(new View.OnClickListener() { 
public void onClick(View view) { 
for (String s : ids) { 
if (searchField.getText().toString().contains(s)) { 
} 
} 
} 
}); 

答えて

0

シンプル(最適化されていない)方法:

あなたのListViewコード


使用ArrayListの代わりの配列、あなたはArrayAdapter

ListView listView=(ListView)findViewById(R.id.list); 
     final String[] ids = res.getStringArray(R.array.idchart_array); 
     ArrayList<String> idList = Arrays.asList(ids); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.test_list_item,idList); 
    listView.setAdapter(adapter); 

に追加した後、配列を変更することはできませんのでご検索コード

List<String> foundStrings = new ArrayList<String>(); 

     for(String s : ids){ 
      if(s.contains(searchField.getText().toString())){ 
       foundStrings.add(s); 
      } 
     } 

     idList.clear(); 
     idList.addAll(foundStrings); 
     adapter.notifyDataSetChanged(); 
+0

うーん...私が試したが、それは動作しませんでした私はforループをあなたのパートに置き換えました。 – BoinQ

+0

また、私はアンドロイドではないいくつかのライブラリをインポートしなければならなかったので、あなたが書いたものがアンドロイド互換であるかどうか疑問に思っています。 – BoinQ

+0

私が書いたものはプレーンなJavaで、アンドロイドで動作します。はい、あなたはjava.util.Listとjava.util.ArrayListをインポートする必要がありますが、あなたのIDEは – Henry

関連する問題