配列/リストに値を追加して共有設定に保存し、別のアクティビティに表示したいとします。Javaでボタンをクリックすると、リストに反復的に追加するにはどうすればよいですか?
私は自分のコードを試してみると、最初の値を保存するように見えるだけです。さらに追加すると、値が上書きされます。
私はボタンをクリックするたびにリストを作成したくないので、最初に置いておきます。
既存の値がない場合、メッセージはリストに追加して共有設定にStatus_0として保存する必要があります。既存の値がある場合はStatus_1として追加する必要がありますが、そうではありません。私はそれがリストに適切に保存されていないためだと思うが、私はそれを行う方法がわからない。ここで
は私のコードです:
public class EnterReadingsActivity extends AppCompatActivity implements View.OnClickListener {
private EditText erTemperatureEditText;
private Button erSubmitBtn;
public List<String> values = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Utils.onActivityCreateSetTheme(this);
setContentView(R.layout.activity_enterreadings);
init();
}
private void init() {
erTemperatureEditText = (EditText) findViewById(R.id.erTemperatureEditText);
erSubmitBtn = (Button) findViewById(R.id.erSubmitBtn);
erSubmitBtn.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (view.getId()==R.id.erSubmitBtn) {
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
String message = erTemperatureEditText.getText().toString();
editor.putInt("Status_size", values.size());
int status_size = values.size();
for (int i = status_size; i < status_size + 1; i++) {
editor.putString("Status_" + i, message);
values.add(message);
editor.commit();
}
}
}
}
編集:
int status_size = values.size();
for(int i = 0; i < status_size + 1; i++)
{
String value = values.get(i);
if (value != null) {
values.add(value);
status_size++;
String textView_i = "textView" + i;
TextView textView_i = new TextView(this);
textView_i.setLayoutParams(new ActionBar.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.WRAP_CONTENT));
textView_i.setText(value);
historyBackgroundInside.addView(textView_i);
}
}
誰かがちょうど建設的なコメントを与えたが、今ではなくなって...これは私の返事だったでしょう。おかげでたくさん、リストには値がないように開始するように、空でなければなりません - と私はリストに "values.add(message);"を追加していると思ったforループの内側にあります。そして、status_size + 1だったのは、リストに2つのエントリがあり、i = 2であり、最初の実行で実行され、i ++のために停止するからです。 – user2633709
それを 'ArrayList'に追加していますが、どこに/ howを表示しようとしていますか?いくつかのタイプの 'Adapter'を使うべきです(' ListView'でそれを表示したいと仮定し、基底のリストを更新するときに 'adapterName.notifyDatasetChanged()'を呼び出す必要があります)。 – codeMagic
私の次のアクティビティーでは、各レコードのテキストビューを作成し、値を表示します。共有プリファレンスに渡すことができます。 – user2633709