如何从SharedPreferences </string>设置ArrayAdapter <string>

时间:2014-03-04 11:51:19

标签: java android sharedpreferences

如何从id.setAdapter(adapter);设置SharedPreferences?我希望当应用关闭时,所有id.getText().toString()都应该出现

ArrayList<String> list = new ArrayList<String>();
ArrayAdapter<String> adapter;
private SharedPreferences atPrefs;
atPrefs = PreferenceManager.getDefaultSharedPreferences(Login.this);
id = (AutoCompleteTextView) findViewById(R.id.id);

adapter = new ArrayAdapter<String>(this,
    android.R.layout.simple_expandable_list_item_1, list);
id.setAdapter(adapter);
adapter.setNotifyOnChange(true);
id.setThreshold(1);

submit.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        if (id.getText().toString().length() >= 3) {

            atPrefs.edit().putString(pos, id.getText().toString()).commit();
            adapter.add(atPrefs.getString(pos, ""));

            Intent nextscreen = new Intent(Login.this, Otp.class);
            startActivity(nextscreen);
            // finish();
        }
    }
});

解决

使用以下代码解决

for (i = 0; i < k; i++) {

    list.add(0, (String) prfs.getString(String.valueOf(i), "null"));
    adapter.notifyDataSetChanged();
}

public void onClick(View arg0) {
    if (id.getText().toString().length() >= 3) {

        list.add(0, (String) id.getText().toString());
        adapter.notifyDataSetChanged();

        edit.putString(String.valueOf(i), id.getText().toString());
        edit.putInt("counter", i + 1);
        edit.apply();

        id.setText("");

        i = i + 1;
    }

1 个答案:

答案 0 :(得分:0)

你应该查看这个answer,保持SharedPreferences中的值并不是一个好主意。

此外,您没有正确使用共享首选项,只保存值,并且永远不会使用_context.getString将其恢复。

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
  super.onSaveInstanceState(savedInstanceState);
  savedInstanceState.putStringArray("myarray", list);
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
  super.onRestoreInstanceState(savedInstanceState);
  list = savedInstanceState.getStringArray("myarry");

}