Android recyclerview – создание динамического стека кнопокAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android recyclerview – создание динамического стека кнопок

Сообщение Anonymous »

В представлении переработки у меня есть 4 разных макета, которые работают нормально. В одном макете я хочу добавить x количество кнопок в стопку в зависимости от данных. Например, в одной строке может быть 3 кнопки, в следующей — 5, в следующей — 2 и т. д. Я сделал это программно из LayoutButtonViewHolder, расширяющего класс RecyclerView.ViewHolder. Однако я могу получить данные для каждой позиции только в классе public void onBindViewHolder(final RecyclerView.ViewHolder Holder, Final int Position), поскольку мне нужна позиция для получения соответствующих данных.
Проблемы заключаются в следующем. поскольку LayoutButtonViewHolder расширяет класс RecyclerView.ViewHolder, вызывается перед общедоступным void onBindViewHolder (конечный держатель RecyclerView.ViewHolder, конечная позиция int), я не могу установить количество кнопок, так как мне нужна позиция, чтобы получить соответствующие данные из список данных.
Как мне заставить класс ViewHolder создать представление на основе данных, которые я получаю из onBindHolder?
Я, вероятно, делаю это неправильно, но, несмотря на несколько дней поисков, не могу понять, как мне этого добиться.
class LayoutButtonViewHolder extends RecyclerView.ViewHolder {
public TextView question;
public LinearLayout buttonStack;

public LayoutButtonViewHolder(View itemView) {
super(itemView);
question = (TextView) itemView.findViewById(R.id.question);
buttonStack = (LinearLayout) itemView.findViewById(R.id.buttonlayout);
LinearLayout buttonStack = (LinearLayout) itemView.findViewById(R.id.buttonlayout);

for (int f = 0; f < buttonNumber; f++) {
Button btnTag = new Button(buttonStack.getContext());
btnTag.setText(buttonOptions[f]);
buttonStack.addView(btnTag);
}

}

}

public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {

final String dataType = calculatorFormList.get(position).getDataType();
final String dataLabel = calculatorFormList.get(position).getDataLabel();
final String dataOptions = calculatorFormList.get(position).getDataOptions();
final String dataOptionsScores = calculatorFormList.get(position).getDataOptionScores();
String[] options = dataOptions.split(Pattern.quote(","));

switch (holder.getItemViewType()) {
case 1:
LayoutButtonViewHolder viewHolder1 = (LayoutButtonViewHolder) holder;
((LayoutButtonViewHolder) holder).question.setText(dataLabel);
buttonNumber = options.length;
buttonOptions = options;
break;


Подробнее здесь: https://stackoverflow.com/questions/790 ... tton-stack
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»