2012-04-23 19 views
0

文字列配列を検索し、その結果をListViewに取得したいと考えています。私は文字列配列によるAndroid検索と結果の取得ListViewへの結果の取得

<string-array name="Colors"> 
    <item>Red</item> 
    <item>Yellow</item> 
    <item>Blue</item> 
    <item>DarkRed</item> 
</string> 

を持っていると私は「赤」を検索する場合

だから、私は、ListViewの2つの項目に取得する必要があります。それぞれの項目について、IDを文字列配列と、ListViewに表示される文字列値に分けたいと思います。

すべてを終了すると消えるProgressBar(不確定状態)を表示したいと思います。

最初のステップでは、文字列配列をListまたはString []にしてから、配列の各項目を比較し、検索テキストと一致するものをListViewに配置する新しいThreadを作成します。

どのような方法が最適なのかわかりません。私のコードは次のようなものです:だから

public class SearchActivity extends Activity { 
    private ProgressBar mProgress; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.search); 

     mProgress = (ProgressBar) findViewById(R.id.Progress); 

     new Thread(new Runnable() { 
      public void run() { 
      int item_pos = 0; 
      int item_count = 0; 

      String[] Colors = getResources().getStringArray(R.array.Colors); 
       item_count = Colors.length(); 

       mProgress.setVisibility(View.VISIBLE); 

       while (item_pos < item_count) { 
        // Compare with the search text 
        // Add it to the ListView (I don't know how) 
        item_pos +=1; 
       } 
       mProgress.setVisibility(View.GONE); 
      } 
     }).start(); 
    } 
} 

、私の質問:

  1. はどのようにして、検索テキストと、各テキスト値を比較するアイテムIDと文字列の両方を得るのですか?
  2. ListViewにアイテムを追加するにはどうすればよいですか?
  3. ProgressBarが表示されないのはなぜですか?ご提案やヘルプのすべてのための

    <ProgressBar 
        android:id="@+id/Progress" 
        style="@android:style/Widget.ProgressBar.Small" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:indeterminate="true" 
        android:visibility="visible" /> 
    

ありがとう:プログレスバーのXMLコードはこれです!

答えて

3

この問題を解決する方法は次のとおりです。今、あなたは無料のリストを持っていることを

for (String s : colorsList) { 
    if (!s.contains("red")) { // hardcoded, only to illustrate my logic 
     colorsList.remove(s); 
    } 
} 

Resources res = getResources(); 
    String[] colors = res.getStringArray(R.array.Colors); 
    // transform into ArrayList for ease of use 
    ArrayList<String> colorsList = Arrays.asList(colors); 

リスト中の所望の配列を検索し、任意の不要な要素を削除します。

まず、私はこのような私のstring-arrayを取得したいですあなたのListViewにバインドしてください。そのためにはArrayAdapterをお勧めします。ドキュメントにはbasic ListView usageに関する偉大な記事が含まれています。

ActivityにListViewが唯一の要素として含まれている場合は、Activityの代わりにListActivityからアクティビティを拡張することができます。 ListViewを簡単に入手するために、単にgetListView()と呼ぶような新しい利点がいくつかあります。

ProgressBarのところでは、AsyncTaskクラスを調べると、アプリケーションでのスレッド処理をより洗練された方法で行うことができます。 Android Dev Teamでは、現在使用している従来のRunnableアプローチよりもAsyncTaskを使用することをお勧めします。

最後に、リストビューに関するいくつかのコードスニペットを一般的に探している場合、実際にはhereを見てください。これはAndroidチームの例でいっぱいです。私がAndroidを起動して、ListViewの周りに頭を上げることができなかったとき、本当に役に立ちました。

このヘルプが必要です。

+0

ありがとうございました。私はこれをAsyncクラスの内部で行いますが、私はそれを二重の利点を得ると思います。あなたの時間をもう一度ありがとう! – ali

関連する問題