【问题标题】:How to display multiple EditText inputs after pressing Button in one TextView?如何在一个 TextView 中按下 Button 后显示多个 EditText 输入?
【发布时间】:2017-03-24 00:37:04
【问题描述】:

我刚刚开始学习如何制作应用程序。我想制作一个应用程序,它应该显示为用户执行的随机输入任务。首先,用户应该选择要创建多少个任务,然后在 EditText 中写下任务。我能够创建特定数量的 EditText,但我不知道如何在按下按钮后显示所有 EditText 输入。我有很多版本的代码,但没有一个可以工作。我被困住了,我需要建议。

这是我的第二个活动的代码版本之一。

public class TaskActivity extends AppCompatActivity {

LinearLayout containerLayout;
TextView receiverTV;
TextView tv;
TextView displayTaskTv;

EditText et;

Button btn;
Button randomTaskBtn;

int i = 0;
int size;

String inputEditText;
String inputTextView;

String stringsEt[];
String stringsTv [];


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_task);
    containerLayout = (LinearLayout) findViewById(R.id.linear_layout);


    receiverTV = (TextView) findViewById(R.id.receiver_textView);


    Intent intent = getIntent();
    int number = intent.getIntExtra("Number", defaultValue);
    receiverTV.setText("You have chosen to add: " + number + " tasks!");

    createEtTvBtn(number);
    createBtn();
    createTextView();

}

public void createEtTvBtn(int number) {

    for (i = 1; i <= number; i++) {
        tv = new TextView(this);
        tv.setText("Task nr: " + i);
        tv.setPadding(16, 16, 16, 16);
        tv.setTextColor(Color.parseColor("#008b50"));
        tv.setTextSize(20);
        tv.setId(i + value);
        containerLayout.addView(tv);


        et = new EditText(this);
        et.setHint("Enter task nr: " + i);
        et.setId(i + value);
        et.setLines(2);
        containerLayout.addView(et);

        btn = new Button(this);
        btn.setText("Confirm task nr: " + i);
        btn.setId(i + value);
        containerLayout.addView(btn);

        final List<EditText> allEditText = new ArrayList<EditText>();
        final List<TextView>allTextView = new ArrayList<TextView>();
        final List<Button>allButton = new ArrayList<Button>();

        String[] stringsEditText = new String[(allEditText.size())];
        String[] stringsTextView = new String[(allTextView.size())];
        String[] stringsBtn = new String[(allButton.size())];


        for(int i=0; i < allEditText.size(); i++){
            stringsEditText[i] = allEditText.get(i).getText().toString();

        }
        for (int i=0; i < allTextView.size(); i++) {
            stringsTextView[i] = allTextView.get(i).getText().toString();
            size = allTextView.get(i).getText().toString().length();
        }
        for(int i=0; i < allButton.size(); i++){
            stringsBtn[i] = allButton.get(i).getText().toString();

        }

        allTextView.add(tv);

        allEditText.add(et);

        allButton.add(btn);

        allButton.get(0).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                inputEditText = allEditText.get(0).getText().toString();
                stringsEt = new String[] {allEditText.get(0).getText().toString()};


                if (inputEditText.length() > 0) {
                allTextView.get(0).setText(inputEditText);

                    allEditText.add(allEditText.get(0));
                    allEditText.get(0).setText("");

                    }
                    else if (inputEditText.length() ==0){
                    Toast.makeText(TaskActivity.this, "You need to write down your task", Toast.LENGTH_LONG).show();
                    }
                inputTextView = allTextView.get(0).getText().toString();
                stringsTv = new String[] {allTextView.get(0).getText().toString()};
                if (inputTextView.length() > 0) {
                    allTextView.get(0).getText();
                    allTextView.add(allTextView.get(0));
                }
            }
        });

    }
}

    private Button createBtn() {
    randomTaskBtn = new Button(this);
    randomTaskBtn.setText("Task");
    containerLayout.addView(randomTaskBtn);

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


            double luckyTask = Math.random();
            luckyTask *=size;
            int luckyIndex = (int)luckyTask;
            displayTaskTv.setText(stringsTv[luckyIndex]);
                }
        });
        return randomTaskBtn;

            }
    private TextView createTextView() {
    displayTaskTv = new TextView(this);
    displayTaskTv.setTextSize(20);
    displayTaskTv.setTextColor(Color.parseColor("#dd2626"));
    displayTaskTv.setText("");
    containerLayout.addView(displayTaskTv);
        return displayTaskTv;

}

}

感谢您的任何建设性建议。

我确信我的代码很混乱。我想创造更多的方法,但我没有成功。

【问题讨论】:

  • 您想动态创建 EditText 和按钮并通过单击分配给特定 editText 的每个按钮来获取文本?如果我猜对了,请告诉我继续
  • 是的,没错。单击确认任务按钮后,我可以在 TextView 中显示 EditText 输入。我想再添加一个按钮,该按钮将在新 Activity 中的一个新 TextView 中显示所有文本视图中的文本。达到该级别后,我想随机显示其中一项任务。
  • 我想以编程方式创建 EditText,因为 EditText 的数量取决于用户。用户选择要添加多少任务。每个任务都是单独的 EditText。在 MainActivity 中,用户可以选择任务数量。在 TaskActivity 中,我根据用户编号的选择创建 EditText、TextView 和 Button。我可以从 EditText 获取输入并通过按下按钮将其显示在 TextView 中。不幸的是,我失去了在一个 TextView 中显示所有 EditText 文本的希望。

标签: java android android-edittext


【解决方案1】:

这是你应该做的

第 1 步 - 创建多个 EditText 并将每个 EditText 存储在 ArrayList 中,例如 myEditTextList

第 2 步 - 从所有编辑文本中获取数据

String str = ""
for(EditText et: myEditTextList) {
   str += et.getText().toString();
}

第 3 步 - 在str 中显示数据,无论您想要什么。

【讨论】:

  • 谢谢!一会儿我会努力做到的
  • 我制作了我的应用程序的简单版本,您的代码确实有效。再次感谢您。
  • 嗨 Abhishek,我可以再问你一个问题吗?
  • @Marzena 当然!如果它解决了您的问题,请接受此答案。
  • 我想保存 EditText 输入。我应该使用 SharedPreferences 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
  • 1970-01-01
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多