getview() に関してはすでにたくさんの質問があることは知っていますが、ここで何が起こっているのか本当にわかりません。
textViews を動的に追加するアダプターがあります。
public View getView(int position, View convertView, ViewGroup parent) {
OrderForAdapter currentData = data.get(position); // getting data
if (convertView == null) {
convertView = inflater.inflate(R.layout.order_detailsforlist, null);
}
if (currentData != null) {
LinearLayout order_details_layout =
(LinearLayout) convertView.findViewById(R.id.order_details_layout);
// Adding the textView name of the person
TextView labelName = new TextView(context);
labelName.setText(currentData.getName());
order_details_layout.addView(labelName);
// looping through all "titres" and display all the titles
ArrayList<ObjectForAdapter> listOfObjects = currentData.getObjects();
for (int i = 0; i < listOfObjects.size(); i++) {
TextView labelTitle = new TextView(context);
labelTitle.setText(listOfObjects.get(i).getTitle());
// Adding the title of each object
order_details_layout.addView(labelTitle);
}
}
return convertView;
}
XML :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.greederz.activities.ListOrdersActivity">
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@android:id/list" />
</LinearLayout>
アプリを初めて起動すると、問題はなく、すべてが正しく表示され、getView()
一度だけ呼び出されます。
しかし、別のアクティビティに行ってこのアクティビティに戻ると、突然getView
2、3 回続けて呼び出されます。
また、画面を回転させると getView() が 1 回呼び出されることにも気付きました (これで機能します)。したがって、ビューが再利用されているか、アクティビティが正しく破棄されていないことが原因である必要があります。
私が見つけた唯一の答えは、layout_height="fill_parent" で、変更しましたが、うまくいきませんでした。
助けてください :)