看板 AndroidDev 關於我們 聯絡資訊
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)