Можно ли добавить разные представления для ListView во время выполнения? - PullRequest
0 голосов
/ 29 декабря 2011

Я столкнулся с ситуацией, когда мне нужно, чтобы каждый элемент ListView имел разные представления.Например, первый элемент может иметь TextView и ImageView, где второй элемент может иметь 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, в котором я могу добавить другой виджет во время выполнения для каждого элемента?Любое предложение будет с благодарностью.

1 Ответ

2 голосов
/ 29 декабря 2011

Установить convertView = null в начале метода.это будет работать.

...