如何将对象的 ArrayList 中的 setText 设置为 TextView?
How to setText from an ArrayList of Objects into a TextView?
我正在尝试使用 setText
方法将 Objects
的 ArrayList
中的所有元素显示为 TextView
。
我在 6 个不同的架子(A、B、C、D、E、F)中有 6 个按钮,每个按钮都有一个弹出菜单,用户在其中选择一个基点(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....
}
这是class 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中的Elements转成String
然后将其提供给 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());
您还想在 PickUpPoint class 中实现 toString() 方法以 return 每个对象的所需表示,例如:
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 方法,
和 new StringBuilder(19 * pickuppoint_array.size()) 可能适用于另一个。
使用此方法设置来自 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)
我正在尝试使用 setText
方法将 Objects
的 ArrayList
中的所有元素显示为 TextView
。
我在 6 个不同的架子(A、B、C、D、E、F)中有 6 个按钮,每个按钮都有一个弹出菜单,用户在其中选择一个基点(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....
}
这是class 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中的Elements转成String 然后将其提供给 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());
您还想在 PickUpPoint class 中实现 toString() 方法以 return 每个对象的所需表示,例如:
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 方法, 和 new StringBuilder(19 * pickuppoint_array.size()) 可能适用于另一个。
使用此方法设置来自 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)