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)