私はアプリを作る方法を学び始めています。私はランダムに入力されたタスクを表示する必要のあるアプリケーションを作りたいと思っています。まず、ユーザーは、作成するタスクの数を選択し、次にEditTextでタスクを書き留める必要があります。私は特定の量のEditTextを作成することができますが、ボタンを押すとすべてのEditText入力を表示する方法がわかりません。私はコードの多くのバージョンを持っていますが、それらのコードは動作しません。私は立ち往生し、助言が必要です。1つのTextViewでButtonを押した後に複数のEditText入力を表示する方法は?
ここは、2番目のアクティビティのコードバージョンです。
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入力を表示することができます。 1つの新しいTextViewのすべてのテキストビューのテキストを新しいアクティビティで表示するもう1つのボタンを追加したいと思います。そのレベルに達した後、タスクの1つをランダムに表示したいと思います。 – Marzena
EditTextの量はユーザーに依存するため、プログラムでEditTextを作成したいと思います。ユーザーは追加するタスクの数を選択します。各タスクは別々のEditTextです。 MainActivityでは、ユーザーはタスクの量を選択できます。 TaskActivityでは、ユーザー番号で選択したEditText、TextView、Buttonを作成します。私はEditTextから入力を受け取り、ボタンを押してTextViewに表示することができます。残念ながら、1つのTextViewにすべてのEditTextのテキストを表示できるという希望は失われています。 – Marzena