В представлении переработки у меня есть 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
Android recyclerview – создание динамического стека кнопок ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1728410981
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;
Подробнее здесь: [url]https://stackoverflow.com/questions/79059866/android-recycle-view-created-dynamic-button-stack[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия