尝试使用列表视图实现共享首选项
Trying to Implement shared preferences with a listview
有人能告诉我我做错了什么吗?我的列表视图出现空指针异常...我正在尝试使用共享首选项在我返回列表视图时将值保留在列表视图中
抱歉,这是一个愚蠢的问题,但在我看来,一切都已初始化,没有任何不应该是空的,所以如果其他人能发现问题,那就太好了:{)
public class MainActivity3 extends MainActivity{
EditText display;
ListView lv;
ArrayAdapter<String> adapter;
Button addButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
display = (EditText) findViewById(R.id.editText5);
lv = (ListView) findViewById(R.id.listView2);
addButton = (Button) findViewById(R.id.button21);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
lv.setAdapter(adapter);
LoadPreferences();
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (display.getText().toString().equals("")) {
}
else {
String task = display.getText().toString();
adapter.add(task);
adapter.notifyDataSetChanged();
SavePreferences("LISTS", task);
}
}
});
}
protected void SavePreferences(String key, String value) {
// TODO Auto-generated method stub
SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = data.edit();
editor.putString(key, value);
editor.commit();
}
protected void LoadPreferences(){
SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(this);
String dataSet = data.getString("LISTS", "None Available");
adapter.add(dataSet);
adapter.notifyDataSetChanged();
}
}
抱歉,这是一个愚蠢的问题,但在我看来,一切都已初始化,没有任何不应该是空的,所以如果其他人能发现问题,那就太好了:{)
<ListView
android:layout_width="wrap_content"
android:layout_height="359dp"
android:id="@+id/listView2"
android:layout_alignParentTop="true"
android:layout_toStartOf="@+id/button21"
android:layout_alignRight="@+id/editText6"
android:layout_alignEnd="@+id/editText6" />
你能把你的布局代码放在这里吗??因为你的组件名称不太好,所以,也许,你可以在另一个布局中调用另一个 listView。
当你有 android.R 时,你能试着删除你的导入行吗?然后,导入正确的。
如果不行,请上代码布局:)
我正在考虑另一种解决方案。转到 listView 并给它这个 id:
android:id="@android:id/list"
然后,转到 MainActivity 并写入:
public class YourClass extends ListActivity
所以,要访问listView,你只需要使用下一个方法:
getListView();
想了解更多请看官方文档here
希望有用
有人能告诉我我做错了什么吗?我的列表视图出现空指针异常...我正在尝试使用共享首选项在我返回列表视图时将值保留在列表视图中
抱歉,这是一个愚蠢的问题,但在我看来,一切都已初始化,没有任何不应该是空的,所以如果其他人能发现问题,那就太好了:{)
public class MainActivity3 extends MainActivity{
EditText display;
ListView lv;
ArrayAdapter<String> adapter;
Button addButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
display = (EditText) findViewById(R.id.editText5);
lv = (ListView) findViewById(R.id.listView2);
addButton = (Button) findViewById(R.id.button21);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
lv.setAdapter(adapter);
LoadPreferences();
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (display.getText().toString().equals("")) {
}
else {
String task = display.getText().toString();
adapter.add(task);
adapter.notifyDataSetChanged();
SavePreferences("LISTS", task);
}
}
});
}
protected void SavePreferences(String key, String value) {
// TODO Auto-generated method stub
SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = data.edit();
editor.putString(key, value);
editor.commit();
}
protected void LoadPreferences(){
SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(this);
String dataSet = data.getString("LISTS", "None Available");
adapter.add(dataSet);
adapter.notifyDataSetChanged();
}
}
抱歉,这是一个愚蠢的问题,但在我看来,一切都已初始化,没有任何不应该是空的,所以如果其他人能发现问题,那就太好了:{)
<ListView
android:layout_width="wrap_content"
android:layout_height="359dp"
android:id="@+id/listView2"
android:layout_alignParentTop="true"
android:layout_toStartOf="@+id/button21"
android:layout_alignRight="@+id/editText6"
android:layout_alignEnd="@+id/editText6" />
你能把你的布局代码放在这里吗??因为你的组件名称不太好,所以,也许,你可以在另一个布局中调用另一个 listView。
当你有 android.R 时,你能试着删除你的导入行吗?然后,导入正确的。
如果不行,请上代码布局:)
我正在考虑另一种解决方案。转到 listView 并给它这个 id:
android:id="@android:id/list"
然后,转到 MainActivity 并写入:
public class YourClass extends ListActivity
所以,要访问listView,你只需要使用下一个方法:
getListView();
想了解更多请看官方文档here
希望有用