使用自定义对象填充微调器

时间:2015-03-16 12:43:57

标签: java android sqlite

我想用来自SQLite表的数据填充我的Android微调器。 我已经有了数据库控制器,它们正在返回自定义对象。

现在我需要做的是用这个对象填充微调器,以便不是字符串字段,而是Id字段。例如: 我的桌子日期,字段ID和日期:

id - day 1 - 周日

2 - 星期一

3 - 星期二......

Day对象有两个属性(id和name)

我希望微调器显示"星期一",但在内部,存储Id字段' 2'在int变量中,为了再次使用theese选择的值查询数据库。

我想我必须使用适配器,但我不知道我是否可以使用此控制器做我想做的事。

我开始提供一些订单或建议。

由于

5 个答案:

答案 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)

最后,我按照本教程解决了这个问题。

http://adanware.blogspot.com.es/2012/03/android-using-spinner-with-custom.html

答案 4 :(得分:0)

ArrayAdapter中的

@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;
}
相关问题