Как установить текст из ArrayList объектов в TextView?

Я пытаюсь использовать метод setText, чтобы показать все элементы из ArrayList из Objects в TextView.

У меня есть 6 кнопок на 6 разных полках (A, B, C, D, E, F) с всплывающим меню на каждой, где пользователь выбирает сторону света (N, S, E, W) и после этого показывает полку письмо и элемент, щелкнутый в текстовом представлении. Это карта:

Как установить текст из ArrayList объектов в TextView?

Вот код, который я использую:

Button buttonA, buttonB, buttonC, buttonD, buttonE, buttonF;
private TextView coordenada_view;
ArrayList<PickUpPoint> pickuppoint_array = new ArrayList<PickUpPoint>();

    @Override
    protected void onCreate{......

buttonA.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    final PopupMenu popupMenu = new PopupMenu(Mapa.this, buttonA);
        popupMenu.getMenuInflater().inflate(R.menu.popup_menu, popupMenu.getMenu());
        popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
          @Override
          public boolean onMenuItemClick(MenuItem item) {
          String mShelving = buttonA.getText().toString();
           String mCardinalPoint = item.getTitle().toString();

                 pickuppoint_array.add(new PickUpPoint(mShelving,mCardinalPoint));
                 PickUpPoint pickUpPoint = new PickUpPoint(mShelving,mCardinalPoint);

//Here I´m trying to show all the elements of the ArrayList into the TextView
                    for (int i = 0; i < pickuppoint_array.size(); i++){
                      coordenada_view.setText( pickuppoint_array.get(i).toString());
                       }
                        return true;
                    }
                });
                popupMenu.show();

buttonB.setOnClickListener....
buttonC.setOnClickListener....
}

Это класс PickUpPoint:

class PickUpPoint {
    public String shelving;
    public String cardinalPoint;

    public String getShelving() {
        return shelving;
    }

    public String getCardinalPoint() {
        return cardinalPoint;
    }

    PickUpPoint(String shelving, String cardinalPoint) {
        this.shelving = shelving;
        this.cardinalPoint = cardinalPoint;
    }
}

Но я получил это из списка массивов:

Как установить текст из ArrayList объектов в TextView?

Итак, мой вопрос... Как получить все элементы из списка массивов, как это?

Как установить текст из ArrayList объектов в TextView?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
785
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я предполагаю, что coordenada_view#setTextможно вызвать только один раз.

Итак, вам нужно сначала преобразовать элементы в pickuppoint_array в строку. а затем передать это методу setText.

StringBuilder content = new StringBuilder();
for (int i = 0; i < pickuppoint_array.size(); i++) {
  content.append(pickuppoint_array.get(i).toString());
  content.append('\n');
}

coordenada_view.setText(content.toString());

Вы также хотите реализовать метод toString() в своем классе PickUpPoint, чтобы возвращать желаемое представление каждого объекта, например:

public String toString() {
    StringBuilder builder = new StringBuilder();
    builder.append("SHELVING ");
    builder.append(shelving);
    builder.append(" - ");
    builder.append(cardinalPoint);
    return builder.toString();
}

Пс.: Если вы знаете ожидаемую длину этих строк, вы должны предоставить ее в качестве параметра конструктору StringBuilder, поэтому jvm не нужно тратить время на изменение ее размера.

новый StringBuilder(18) может работать для метода toString, и новый StringBuilder(19 * pickuppoint_array.size()) может работать для другого.

Ответ принят как подходящий

Используйте этот метод, чтобы установить текст из Arraylist

Также проверьте, не является ли Arraylistnull и пустым

public void setTextViewFromList(ArrayList<PickUpPoint> arraylist, TextView textview) {
    //Variable to hold all the values
    String output = "";

    for (int i = 0; i < arraylist.size(); i++) {
        //Append all the values to a string
        output += arraylist.get(i).getShelving();//whatever you want to show here like shelving or cordinalpoint use getCordinalPoint()
        output += "\n";
    }

    //Set the textview to the output string
   textview.setText(output);
}

ПРИМЕНЕНИЕ

Вызовите этот метод следующим образом

setTextViewFromList(pickuppoint_array,coordenada_view)

Tahnks Quick Learner, пытается использовать ваш метод, но он не распознает getName() и append('\n') .

fromAB 17.05.2019 15:44

проверь мой ответ сейчас

Quick learner 18.05.2019 19:07

Другие вопросы по теме