我想用来自SQLite表的数据填充我的Android微调器。 我已经有了数据库控制器,它们正在返回自定义对象。
现在我需要做的是用这个对象填充微调器,以便不是字符串字段,而是Id字段。例如: 我的桌子日期,字段ID和日期:
id - day 1 - 周日
2 - 星期一
3 - 星期二......
Day对象有两个属性(id和name)
我希望微调器显示"星期一",但在内部,存储Id字段' 2'在int变量中,为了再次使用theese选择的值查询数据库。
我想我必须使用适配器,但我不知道我是否可以使用此控制器做我想做的事。
我开始提供一些订单或建议。
由于
答案 0 :(得分:3)
您可以使用ArrayAdapter<T>
通过方法setAdapter
填充您的微调器。
private List<MyData> data;
...
mySpinner.setAdapter<MyData>(new ArrayAdapter(getContext(), resId, data));
...
public class MyData {
private int _id;
public MyData(int id) {
this._id = id;
}
@Override
public String toString() {
switch (this._id) {
....
}
}
}
答案 1 :(得分:2)
您可以使用Custom Spinner执行此操作。请参阅this在xml中单独设计微调器项并使用LayoutInflator。
答案 2 :(得分:1)
保存: 在适配器的getView()中使用“setTag”方法设置“日期对象”
retrive :( onItemSelcted方法的微调器) 现在通过使用getTag()方法,获取“Day对象”(Day object.getId()将返回int值)
答案 3 :(得分:1)
答案 4 :(得分:0)
@Override
public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View v = super.getDropDownView(position, convertView, parent);
if (position > 0) {
((TextView) v.findViewById(android.R.id.text1)).setText(list.get(position - 1).getName());
}
return v;
}