2011-12-07 11 views
0

私のアプリケーションでは、データベースから数値を取得します。アクティビティが開始されると、番号が異なる色で表示され、リストの他の番号が表示されます。このコードはOnCreateの機能の中に入れたアクティビティの作成/開始時にlistviewアイテムにアクセスする方法は?

int row = 5; 
TextView child = (TextView)ListView.GetChildAt(row); 
child.SetTextColor(Color.Red); 

は、データベースからデータを取得した後、これは私のコードです。私は子のtextviewのためにヌル値を得ていました。私はその後、null値の理由は、OnCreate関数では、listviewはまだレンダリングする必要があることを発見した。私はその後、OnStart()関数にコードを移動しましたが、これはうまくいきませんでした。

アクティビティの作成/開始時にリストビューから子行を取得する方法を教えてもらえますか?

答えて

1

このようにしても、このビューをリサイクルするときに問題が発生します(上下にスクロールしたときに他のビューが赤色で表示されます)。 あなたは()アダプタを無効にし、getViewメソッドの下であなたが望む位置に をビューの色を設定する必要があります -

TextView myText = (TextView) view.findViewById(R.Id .... 
if (pos==5) 
    myText.setTextColor(Color.Red); 
else 
    myText.setTextColor(Color.Black); //original color.. 

EDIT:あなたは、カスタムXMLを持っている必要はありません

。あなたがアンドロイドのxmlを見つけたら、そのIDを見つけることができます。私はそのandroid.R.id.text1を信じています。ので、あなたのアダプタが

myAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1) { 
       @Override 
       public View getView(int position, View v, ViewGroup parent) { 
        if (v == null) { 
          LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
          v = inflater.inflate(android.R.layout.simple_list_item_1, null); 
         } 
        View view = super.getView(position, v, parent); 
        if (position==5) 
         view.setTextColor(Color.Red); 
        else 
         view.setTextColor(Color.Black); //original color.. 
} 
myList.setAdapter(myAdapter); 

ない、私はそれがすべての権利が、そのようなものだ確かのようになります。.. ことができます願っています。

+0

あなたの例を使って、私はxmlのすべてのビューを持っている必要があります。現時点で私はプログラムでこれをやろうとしています。文字列[]を作成して番号を保持した後、文字列[]を持つ新しいArrayAdapterを作成します。それから、私は正しい視点に色をつけようとします。このようにするソリューションをご存知でしょうか? – Aidan

+0

あなたのニーズに合わせて私の答えを編集しました。それが役に立てば幸い。 :) – Joe

+0

私はあなたの答え全体を使用しなかったが、私はそれのために私の問題の解決策を見つけた。ありがとうございました! – Aidan

関連する問題