ListViewがすでにレンダリングされている場合(たとえば、onClickイベントによって起動された場合など)に正常に機能する次のコードがあります。
TextView tv = (TextView)list.getChildAt(position); //list is my ListView
if (tv!=null) {
tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
}
ただし、アクティビティが復元されているとき(ローテーション後、再起動...)、このSTRIKE_THRU_TEXT_FLAGフラグをListViewの一部のアイテムに適用する必要がある場合があります。このコードをonCreateメソッドまたはonStartメソッドで実行しようとすると、ListViewアイテムがまだ表示されていないため、nulllist.getChild(position)
が返されます(実際、この時点では画面が黒く、実際の描画は後の関数で行われるようです)。
これを回避する簡単な方法はありますか?たぶん、 getChild関数はこの場合には最適ではありません...または、ListViewのレンダリング関数をオーバーライドして機能させますか(私にはやり過ぎのようです)?ありがとう