0

ListViewの各アイテムを異なるビューにする必要がある状況に遭遇しました。たとえば、最初の項目にはTextViewImageViewがあり、2 番目の項目には と がButtonありTextViewます。
私の最初の試みは、アイテム アダプター内にネストされたテーブル レイアウトを使用することでしたが、うまくいきません。

public View getView(int position, View convertView, ViewGroup parent) {
        ItemViewHolder holder;
        LayoutInflater inflater = context.getLayoutInflater();
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.user_activity_item, null);
            holder = new ItemViewHolder();
            holder.textViewText = (TextView) convertView.findViewById(R.id.user_activity_item_xml_textview_user_name);
            holder.textViewText2 = (TextView) convertView.findViewById(R.id.user_activity_item_xml_textview_user_where);
            holder.table = (TableLayout) convertView.findViewById(R.id.user_activity_item_xml_tablelayout_activity_table);
            convertView.setTag(holder);
        }
        else {
            holder = (ItemViewHolder) convertView.getTag();
        }

        holder.textViewText.setText(items.get(position));
        holder.textViewText2.setText(items.get(position));

        // add a new row
        TableRow row = new TableRow(context);
        row.setLayoutParams(new android.widget.TableRow.LayoutParams(android.widget.TableRow.LayoutParams.FILL_PARENT, android.widget.TableRow.LayoutParams.WRAP_CONTENT));
        ImageView i = new ImageView(context);
        TextView t = new TextView(context);
        t.setText("Some texts");
        row.addView(i);
        row.addView(t);
        holder.table.addView(row, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
        return convertView;
    }

リストがロードされるたびに、それに応じてテーブルが変更されました。そのため、アイテム数は増え続けています。私の質問は、この状況を処理する方法はありますか? ListView各アイテムの実行時に別のウィジェットを追加できるダイナミックを作成するにはどうすればよいですか? どんな提案でも大歓迎です。

4

1 に答える 1

2

メソッドの開始時に convertView = null を設定します。それが動作します。

于 2011-12-29T05:02:53.527 に答える