Можно ли перебирать элементы и устанавливать кнопки клавиатуры?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Можно ли перебирать элементы и устанавливать кнопки клавиатуры?

Сообщение Anonymous »

Java Telegram-бот
Я пытаюсь создать класс, который может задавать вопросы из репозитория и предоставлять ответы из другого репозитория с помощью InLineKeyboard. У меня есть много ответов на каждый вопрос, я могу получить их с помощью Preicate var Answers = answerRepository.findAll(new AnswerSpecification(model)); (уже работает нормально). Проблема в том, что цикл создает клавиатуру.
Я хочу, чтобы он строился в зависимости от того, сколько ответов есть в репозитории, но не более 3 в строке. Введите здесь описание изображения
Основная проблема заключается в том, что он устанавливает каждый кнопка с первым элементом в списке, как это исправить? Я хочу, чтобы каждая следующая кнопка содержала следующий элемент из репозитория.

Код: Выделить всё

    private void askQuestion(Long chatId, Long questionId) {

var question = questionRepository.findById(questionId).get().getText();

SendMessage message = new SendMessage();
message.setChatId(String.valueOf(chatId));
message.setText(question);

InlineKeyboardMarkup markupLine = new InlineKeyboardMarkup();
List rowsInLine = new ArrayList();
List rowInLine = new ArrayList();
var button = new InlineKeyboardButton();

Criteria model = new Criteria("questionId", Operation.EQ, String.valueOf(questionId));
var answers = answerRepository.findAll(new AnswerSpecification(model));

// count of all answers got by questionId
int answers_count = answers.size();
// count of max rows
int rows_count = answers_count / 3;

# for (Answer an : answers) {
# while (rowsInLine.size() < rows_count) {
# while (rowInLine.size() < 3) {
# button.setText(an.getText());
# button.setCallbackData(an.getText());
# rowInLine.add(button);
#                 }
# rowsInLine.add(rowInLine);
#             }
#         }**
markupLine.setKeyboard(rowsInLine);
message.setReplyMarkup(markupLine);

executeMessage(message);

}
Я пытался заменить while и for (Ответить на ответ), но это моя лучшая попытка.

Подробнее здесь: https://stackoverflow.com/questions/786 ... rd-buttons
Ответить

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

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

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

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

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