2011-07-23 24 views
0

私はリストビューを持っており、アイテム2のようなアイテムの背景色を変更する必要があります。listviewの項目の背景色をプログラム的に変更するにはどうすればよいですか?

このコードで試しましたが、3行目がnullpointerexceptionを与えていますがリストには11アイテム!!!私は、問題

CalendarList = (ListView) findViewById(R.id.CalendarList); 
CalendarList.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, MyApplication.roundMatches(CalendarPicker.getValue()))); 
CalendarList.getChildAt(2).setBackgroundColor(0xFFFF0000); 
+0

の抜粋の下に自分のアクティビティコードを投稿していただきますしてください見てみましょう。 –

答えて

0

を適用する前に、最終的にはこれらのソリューションのどれも働かない、私は、別の方法でこれをしなかったテキストの色を変更していない背景

0

は問題が実際に画面上に表示するために必要なビューを作成するには、リストビューを高度に最適化されていることですかを理解いけません。したがって、getChildAt()は作成されていない行に対してnullを返します。 getChildAt()からのnull戻り値をチェックするだけです。行2(この場合)がまだ存在しない場合は、行が拡張されたとき(getView()、bindView()などで)後で作成されます。そのときに適切な色を設定することができます。

0

setBackgroundColor()の代わりにsetBackgroundResource(R.color.myRow_red)を使用する必要があります。あなたの例では、リソースに記述されている実際の色ではなく、背景色にIDが割り当てられています。最初に、作成された行または作成されていない行について、getChildAt()のnullを戻す必要がありますか?あなたはsetBackgroundColor()

+0

そのbackgroundcolourの作成方法は?そのリソースでxmlを作成する方法は?あなたは私にXMLコードを与えることができますか?そして、どこにxmlを置く必要がありますか? – NullPointerException

+0

の<?xml version = "1.0" エンコード= "UTF-8"?> <= "背景" 色名>#3500ffff \t <色名= "transparent_blue">#80004488 ...... .. <色名= "黒">#FF000000 <色名= "darker_gray">#1 ffaaaaaa <色名= "白"># Android

+0

とRES /値内部このXMLファイルFFFFFFFF/color(ここでcolor.xmlは、上記の要素を持つファイル名で、色の名前と値を意味します) – Android

関連する問題