0

実行時に動的に ListView に要素を追加しようとしています。これが私のコードです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/category_row"
    android:orientation="horizontal" >
    <!-- Contents will be added at Runtime -->
</LinearLayout>

アダプターによってオーバーライドされた getView 関数

@Override
    public View getView(final int position, final View convertView,
            final ViewGroup parent) {
        View searchResultsRow = convertView;
        LinearLayout linearLayout;
        TextView e1,e2,e3,e4;
        if (searchResultsRow == null) {
            LayoutInflater layoutInflator = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            searchResultsRow = layoutInflator.inflate(
                    R.layout.categories_row_object, null);
            linearLayout = (LinearLayout) searchResultsRow.findViewById(R.id.category_row);

        }
        e1 = new TextView(context);
        e2 = new TextView(context);
        e3 = new TextView(context);
        e4 = new TextView(context);

        e1 = new TextView(context);
        e1.setText("Fashion");
        linearLayout.addView(e1);

        e2 = new TextView(context);
        e2.setText("Men");
        linearLayout.addView(e2);

        e3 = new TextView(context);
        e3.setText("Casual Wear");
        linearLayout.addView(e3);


        e4 = new TextView(context);
        e4.setText("Jeans");
        linearLayout.addView(e4);


        return searchResultsRow;
    }

最初の数行がごちゃごちゃしているように見えるとどうなるでしょうか。複数の行が同じ行に追加されたように。私は何を間違っていますか?

敬具、

4

2 に答える 2

1

ConvertView != null、linearLayout が初期化されていないかどうか疑問に思っています。

于 2013-04-10T15:44:09.640 に答える
0

ここでの問題はconvertView、null でない場合、以前に使用されたビューであり、既に 4 が含まれていることTextViewsです。

あなたがしなければならないことは、既存のTextViewsfromを再利用することconvertViewです。

これを行う 1 つの方法は、次のとおりですcategories_row_object。4TextViewを入れてから、ID でアクセスします。

または、 の子ビューを参照できますLinearLayout

于 2013-04-11T07:52:08.253 に答える