Как установить текст из ArrayList объектов в TextView? - PullRequest
0 голосов
/ 17 мая 2019

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

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

image

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

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;
    }
}

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

image

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

image

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

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

Также проверьте, если Arraylist не null и не пусто

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)
0 голосов
/ 17 мая 2019

Я предполагаю, что 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();
}

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...