android spinner保存对象,新人,在listview中加载的spinner,spinner内容如何保存
时间: 2024-03-07 08:48:14 浏览: 168
要在 Android 中保存 Spinner 中选定的对象,可以使用 ArrayAdapter 和 SharedPreferences。
首先,将对象列表传递给 ArrayAdapter,然后将 ArrayAdapter 传递给 Spinner 来填充 Spinner 的选项。
当用户选择 Spinner 中的选项时,可以通过监听器获取选定的对象,然后将其保存到 SharedPreferences 中。
以下是一个示例代码:
```java
// 定义对象类
public class MyObject {
private String mName;
private int mValue;
public MyObject(String name, int value) {
mName = name;
mValue = value;
}
public String getName() {
return mName;
}
public int getValue() {
return mValue;
}
}
// 在 Activity 中初始化 Spinner
Spinner spinner = findViewById(R.id.spinner);
// 创建对象列表
List<MyObject> objects = new ArrayList<>();
objects.add(new MyObject("Object 1", 1));
objects.add(new MyObject("Object 2", 2));
objects.add(new MyObject("Object 3", 3));
// 创建 ArrayAdapter
ArrayAdapter<MyObject> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, objects);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// 设置 ArrayAdapter 到 Spinner
spinner.setAdapter(adapter);
// 监听 Spinner 选择事件
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// 获取选定的对象
MyObject selectedObject = (MyObject) parent.getItemAtPosition(position);
// 保存选定的对象到 SharedPreferences
SharedPreferences prefs = getSharedPreferences("MyPrefs", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("selectedObjectName", selectedObject.getName());
editor.putInt("selectedObjectValue", selectedObject.getValue());
editor.apply();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// Do nothing
}
});
// 在 Activity 的 onCreate() 方法中,加载 SharedPreferences 中的选定对象
SharedPreferences prefs = getSharedPreferences("MyPrefs", MODE_PRIVATE);
String selectedObjectName = prefs.getString("selectedObjectName", null);
int selectedObjectValue = prefs.getInt("selectedObjectValue", -1);
if (selectedObjectName != null && selectedObjectValue != -1) {
for (int i = 0; i < objects.size(); i++) {
MyObject object = objects.get(i);
if (object.getName().equals(selectedObjectName) && object.getValue() == selectedObjectValue) {
spinner.setSelection(i);
break;
}
}
}
```
这个示例代码中,我们创建了一个对象类 MyObject,它有一个名称和一个值。我们将 MyObject 列表传递给 ArrayAdapter,然后将 ArrayAdapter 设置到 Spinner 中。在 Spinner 的选择事件监听器中,我们获取选定的对象,并将其保存到 SharedPreferences 中。在 Activity 的 onCreate() 方法中,我们加载 SharedPreferences 中的选定对象,并在 Spinner 中选择它。
注意,这个示例代码仅仅是给出了一个思路,具体实现可能因为你的需求而有所不同。
阅读全文