展開可能なリスト ビューを含むアプリを作成しています。子ビューは動的に作成されます。そしてそれは正常に実行されます。デバッグ中に getChildview 関数が 2 回実行されることがわかりました。
動的レイアウトを作成してリストに入れます。getChildView が 2 回実行されると、レイアウトがリストに 2 回追加されます。
展開可能なリスト ビューを含むアプリを作成しています。子ビューは動的に作成されます。そしてそれは正常に実行されます。デバッグ中に getChildview 関数が 2 回実行されることがわかりました。
動的レイアウトを作成してリストに入れます。getChildView が 2 回実行されると、レイアウトがリストに 2 回追加されます。
getChildView()
子を作成するのに適切な場所ではありません。よく呼ばれるかもしれません。とにかく、レンダリング プロセスは子を 2 回訪問する必要があります。
子供をリストに追加するのに適切な場所がどこかを判断することはできません。さらに多くの情報がなければ、リストのアプローチが正しい方法であるかどうかを判断することはできません。
私にとってうまくいったことの1つは、.
@Override
public boolean hasStableIds() {
// To avoid refreshing return true and makesure Ids each position have same view.
return true;
//return false;
}
私はアンドロイド開発に不慣れで、間違っているかもしれませんが、私が見るように、最初にビューをレンダリングする必要があるnullであるgetChildView()
4番目の引数 Viewがあります。convertView
作成されたデータは保存され、必要に応じて再利用されます。したがって、新しいビューを作成する場合getChildView()
は、このようなもので十分です
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
if (convertView != null) {
// View is already created here, update it if you like
return convertView;
}
// Else create your view(s) here and return the root of view container as usual
...
return convertView; // or whatever your root view is
}