作者tails32100 (Tails)
看板AndroidDev
标题[问题] ORMLite + Spinner View 该如何组合使用?
时间Fri May 24 19:01:18 2013
ORMLite:
http://ormlite.com/
Spinner View:
http://developer.android.com/reference/android/widget/Spinner.html
问题源由:
有个编辑输入的Activity
会用ORMLite读出资料表的多笔资料 (List<DataClass>)
然後要用Spinner来做显示选择
再存到另一个资料表
简单来说,想要做网页常见的部落文章与分类的关联
问题重点:
ORM DataClass实作需要override toString()
Spinner.setAdapter() 看过许多教学都是用ArrayAdapter<String>来实作的
当然<String>理论上也是可以换成ORM的<DataClass>
但也需要override toString()
这时就冲突了Orz...
结果小弟的做法是写另一个class:
public abstract class OrmAdapter {
Object object;
public OrmAdapter(Object o) {
this.object = o;
}
Object getObject() {
return this.object;
}
@Override
public String toString() {
return this.getText();
}
abstract String getText();
}
然後Activiy里,重新建立另一个List:
List<OrmData> data = dao.queryForAll();
List<OrmAdapter> list = new ArrayList<OrmAdapter>();
for (OrmData one : data) {
list.add(new OrmAdapter(one) {
@Override
String getText() {
return ((OrmData) this.object).text;
}
});
}
ArrayAdapter<OrmAdapter> adapter = new ArrayAdapter<OrmAdapter>(
MainActivity.this, android.R.layout.simple_list_item_1, list
);
spinner.setAdapter(adapter);
取值的时候:
OrmData data = (OrmData) ((OrmAdapter) spinner.getSelectedItem()).getObject();
Log.i("Tag", data.text);
是有想过用别的方法,如BaseAdapter:
http://blog.csdn.net/Android_Tutor/article/details/5707835
但好像会变更复杂....
想请问有其他比较简单的解决方法吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.170.9.94
※ 编辑: tails32100 来自: 118.170.9.94 (05/24 19:02)