0

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()一度だけ呼び出されます。

しかし、別のアクティビティに行ってこのアクティビティに戻ると、突然getView2、3 回続けて呼び出されます。

また、画面を回転させると getView() が 1 回呼び出されることにも気付きました (これで機能します)。したがって、ビューが再利用されているか、アクティビティが正しく破棄されていないことが原因である必要があります。

私が見つけた唯一の答えは、layout_height="fill_parent" で、変更しましたが、うまくいきませんでした。

助けてください :)

4

0 に答える 0