TextViewのテキストを更新しようとすると問題が発生します。
空のListViewでレイアウトを作成したMainActivityがあります。このListViewをカスタムListItemで埋めるために、ListItemに埋めるための情報を取得するカスタムAsyncTaskLoaderと、ListItemに読み込まれたデータを埋めるカスタムBaseAdapterを作成しました。
この部分にはエラーがなく、完全に実行されます。
ただし、ListViewのListItemからTextViewのテキストを更新しようとすると問題が発生します。ご覧のとおり、コンストラクターのパラメーターとしてOnTickListenerというインターフェイスを使用するカスタムCountDownTimerを作成しました。ListItemを作成するたびに一意のIDがあり、これを使用して、そのListItemのTextViewをHashMapに格納し、CountDownTimerをHashMapに格納しています。これらのHashMapは、カスタムBaseAdapter内で作成および保持されます。
BaseAdapterはOnTickListenerも実装します。
MyCountDownTimerがOnTickを呼び出すたびに、コンストラクターで提供されたOnTickListenerを呼び出し、intidとStringtextの2つのパラメーターを渡します。
これにより、OnTickListenerの唯一のメソッドであるpublic void OnTick(int id、String text)のBaseAdapters実装が呼び出されます。
onTickメソッドでは、次のようにします。
- 前述のHashMapでIDのTextViewを見つけます。
- TextViewsテキストを更新します。
今、これは何らかの方法で機能しているようです。上下にスクロールすると、TextViewsのテキストが再び画面に表示されると更新されることがわかります。ただし、TextViewがすでに画面に表示されている場合は、TextViewは更新されません。TextView.invalidate()とTextView.postInvalidate()を呼び出そうとしました。私の必死で、TextViewを更新しようとするRunnableを投稿するハンドラーを作成しようとさえしました。
しかし、何も機能していないようです。TextViewを更新する方法について何かアイデアがありますか?
TL DR:BaseAdapterで作成されたCountDownTimerから、アクティビティの一部であるListItem内のTextViewを更新する方法を知る必要があります。
テキストの壁でごめんなさい^^"