タイマーからUIを更新したいと思います。それはまったく問題ではありませんが、Gallery/ListViewsに関しては難しくなります。カスタムBaseAdapterを持つギャラリーがあります。私はすべての(ギャラリー)アイテム(すべてのアイテムはアイテムデータによって異なる)にカウンタが必要です。そのカウンタはメインスレッドの外側で実行する必要があります。さらに、1つの項目だけが表示されている場合、ギャラリーの10項目に対して10のスレッドを実行する必要はありません。 ItemViewが表示されたときにHandlerを定義し、アダプターgetView()メソッドでスレッド(カウント)を開始することは問題ではありません。 getViewメソッド()で、私はビューが表示されたときに気づかので更新ギャラリー/リストビューアイテムビューからタイマー
public class MyAdapter extends BaseAdapter {
static class ViewHolder {
//...
public Handler myHandler;
}
public View getView(int position, View convertView, ViewGroup parent) {
//...
// getView() gets called indefinite so first remove callback because it may be added already
holder.myHandler.removeCallbacks(myRunnable);
holder.myHandler.postDelayed(myRunnable, 0);
//...
}
}
問題はもう見えないビューのthatsのためのコールバックを削除することですが、私は何を持っている:私は、次のコードのようなものを考えることはできませんどのようにコールバックを取り除くことが不可視になったのか(したがってホルダーとそのハンドラー)のビューを取得する方法を手がかりにします。
これを解決するアプローチがありますか?
おめでとう。あなたができるときは、他の人があなたの解決策を見つけるのを助けるためにあなたの答えを「受け入れられた」とマークしてください。乾杯〜 –