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

Вот код, который я использую:
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;
}
}
Но я получил это из списка массивов:

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





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