繁体   English   中英

如何将Object的ArrayList中的TextTxt设置为TextView?

[英]How to setText from an ArrayList of Objects into a TextView?

我试图使用setText方法将ObjectsArrayList的所有元素显示到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....
}

这是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类中实现toString()方法以返回每个对象的所需表示形式,例如:

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

Ps。:如果你知道这些字符串的预期长度,你应该将它作为参数提供给StringBuilder构造函数,因此jvm不需要浪费时间来调整它。

新的StringBuilder(18)可能适用于toString方法,而新的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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM