【问题标题】:App which displays List does not work显示列表的应用程序不起作用
【发布时间】:2017-11-09 10:34:26
【问题描述】:

我尝试制作一个带有按钮的应用程序,该按钮在推送后将显示editText中列表中的所有元素。 但是我有一个问题,目前在我按下按钮后,我在editText中只看到“第二个”
在我看来,我需要您提供有关如何操作的提示。也许我不应该使用循环?

public class MainActivity extends AppCompatActivity {

    private Button button;
    private EditText editText;
    private ArrayList<String> list = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = (Button) findViewById(R.id.button);
        editText = (EditText) findViewById(R.id.editText);

        list.add(0, "first");
        list.add(1, "second");

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                for (String abc: list){

                    editText.setText(abc);

                }


            }
        });
    }

}

____ 编辑

public class MainActivity extends AppCompatActivity {

    private Button button;
    private EditText editText;
    private ArrayList<String> list = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = (Button) findViewById(R.id.button);
        editText = (EditText) findViewById(R.id.editText);

        list.add(0, "first");
        list.add(1, "second");
        list.add(2, "3");
        list.add(3, "4");
        list.add(4, "5");

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String final_text = "";

                for (String abc: list){

                    final_text = final_text + "\n" + abc;

                }

                editText.setText(final_text);

            }
        });
    }

}

enter image description here

【问题讨论】:

  • 提示:你正在用“second"”覆盖"first"

标签: java android


【解决方案1】:

您正在覆盖editText 中的文本。从list 中累积字符串并在循环外执行setText:-

@Override
public void onClick(View v) {
  String final_text ="";
  for (String abc: list){
   final_text = final_text +"\n" + abc;
  }
  editText.setText(final_text);
}

【讨论】:

  • 单个单词还在同一条车道上
  • 由于final_text +"\n" + abc,每个列表元素都应该在一个新行中
  • 我添加了带有屏幕的编辑问题,最后添加了新代码,它在设备上的外观如何,您能检查一下为什么不起作用吗?
  • 确保 manifest.xml 中的 editText 属性设置为多行:stackoverflow.com/questions/4233626/…
  • 哇,好,最后一个问题,没有第一条员工线是否可以做到?
【解决方案2】:

在此循环中,您将始终将列表的最后一个字符串放入编辑文本中

for (String abc: list){
    editText.setText(abc);
}

您需要创建多个编辑文本以从列表中添加多个值,否则您需要将列表中的所有值编译为一个字符串,如 @Zakir 建议的那样。

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    相关资源
    最近更新 更多