複合リスト ビューのモデル値を計算するRunnable
クラスがあります。そのランナブルには、カスタム スレッド内に UI スレッドがあります。そこにアダプターのnotifyDataSetChanged()
呼び出しがありnotifyDataSetChanged()
ますが、メインレイアウトの TextView 値を更新しようとした後です。問題は、実行中の TextView が最初に更新され、次に ListViews が更新されて更新される場合です。カスタムクラスが最後に更新されるということnotifyDataSetChanged()
は、Adapter
私には適していません。これらの画面の更新を同期する可能性はありますか?
サンプルコードは次のとおりです。
public class TestRunnable implements Runnable {
private TestAdapter adapter;
@Override
public void run() {
Context.runOnUiThread(new Runnable() {
@Override
public void run() {
adapter.notifyDataSetChanged();
MainActivity.setTextViewValue("Something...");
}
});
}
}
public class TestAdapter extends ArrayAdapter<TestModel> {
@Override
public View getView(final int position, View view, ViewGroup parent) {
View row = view;
TestHolder holder;
Boolean rowIsNew = false;
if (row == null) {
rowIsNew = true;
LayoutInflater layoutInflater = ((Activity) context)
.getLayoutInflater();
row = layoutInflater.inflate(layoutResourceId, parent, false);
holder = new TestHolder();
...
row.setTag(holder);
} else {
holder = (TestHolder) row.getTag();
}
TestModel testModel = data.get(position);
holder.property = testModel.property;
...
if (rowIsNew) {
holder.....setTypeface(...);
holder.....setTypeface(...);
}
return row;
}
}