SharedPreference只向ListView添加一个项目并覆盖他

时间:2016-02-17 21:27:40

标签: android listview sharedpreferences

使用SharedPreference在列表视图中输入文本时出现问题。将文本添加到ListView并始终覆盖列表中的第一个项目。有人会帮忙吗?谢谢你的帮助。

头等舱

public class MainActivity extends AppCompatActivity {
    private EditText et_enter;
    private Button btn_dodaj, btn_second;
    Activity context = this;
    SharedPreference sharedPreference;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        et_enter = (EditText) findViewById(R.id.et_enter);
        btn_dodaj = (Button) findViewById(R.id.btn_dodaj);
        btn_second = (Button) findViewById(R.id.btn_second);

        btn_second.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, ListActivity.class));
            }
        });
        sharedPreference = new SharedPreference();
        btn_dodaj.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String task = et_enter.getText().toString();
                sharedPreference.save(context, "LISTS", task);
            }
        });
    }

}

第二课

  public class ListActivity extends AppCompatActivity {
        SharedPreference sharedPreference;
        private ListView listview;
        ArrayAdapter<String> adapter;
        Activity context = this;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_list);
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);

            sharedPreference = new SharedPreference();

            listview = (ListView) findViewById(R.id.listview);
            adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
            listview.setAdapter(adapter);
            String string = sharedPreference.getValue(context);
            adapter.add(string);
            adapter.notifyDataSetChanged();

        }
    }

第三课

public class SharedPreference {
    public SharedPreference() {
        super();
    }
    public void save(Context context, String key, String text) {
        // TODO Auto-generated method stub
        SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(context);
        SharedPreferences.Editor editor = data.edit();
        editor.putString(key, text);
        editor.commit();
    }
    public String getValue(Context context) {
        SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(context);
        String dataSet = data.getString("LISTS", "None Available");
        return dataSet;
    }
}

照片:

enter image description here enter image description here

2 个答案:

答案 0 :(得分:0)

你实际上正在改变&#34; LISTS&#34;的价值。在依次打开SharedPreferences中的键,这是覆盖的原因。尝试使用不同的名称。

答案 1 :(得分:0)

我通过使用数据库解决了这个问题。感谢。