看板 AndroidDev 關於我們 聯絡資訊
大家都知道如果要實作BaseAdapter的實作品都要改寫getView函式; 可是我用起來就一直覺得很奇怪 因為我習慣用LinearLayout來排版 所以寫起來就會像這樣... public class MyBaseAdapter2 extends BaseAdapter{ Activity activity; ArrayList< ArrayList<String> > Data; public View getView(int position,View convertView,ViewGroup parent) { LinearLayout Line=new LinearLayout(activity); Line.setOrientation(LinearLayout.HORIZONTAL); int sz= Data.get(0).size(); TextView[] LineElement=new TextView[sz]; for (int i=0; i< sz; i++) { LineElement[i]=new TextView(activity); LineElement[i].setText( Data.get(position).get(i)); Line.addView(LineElement[i]); } return Line; } } 上面那種寫法跑起來可以跑 但是我想包在自己的class內處理 例如 public class MyStringModel { Activity activity; ArrayList<String> Data; public LinearLayout Response; MyStringModel(ArrayList<String> inn,Activity a) { Data=inn; activity=a; constructResponse(); } private void constructResponse() { Response=new LinearLayout(activity); Response.setOrientation(LinearLayout.HORIZONTAL); int sz= Data.get(0).size(); TextView[] LineElement=new TextView[sz]; for (int i=0; i<sz; i++) { LineElement[i]=new TextView(activity); LineElement.setText( Data.get(i)); Response.addView(LineElement[i]); } } } 這樣的話BaseAdapter2就可以這樣寫 public class BaseAdapter2 extends BaseAdapter { MyStringModel[] M; public BaseAdapter2(ArrayList< ArrayList<String> > data,Activity a) { ... M=new MyStringModel[sz]; for (int i=0; i<sz; i++) { M[i]=new MyStringModel(data.get(i),activity); } ... } public View getView(int position,View convertView,ViwGroup parent) { return M[position].Response; } } 可是怎麼試都會當機.... 有人能幫我看看嗎? -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.175.123.70 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1426765518.A.DF0.html ※ 編輯: easterday (1.175.123.70), 03/19/2015 19:46:11
givemepass: Log? 03/19 20:36
TJLduck: 你這程式編譯會過嗎? 03/20 13:43
TJLduck: LineElement.setText( Data.get(i)); 03/20 13:44
samsumg: 樓上這行編譯可過 因為ArrayList<String> 03/20 14:00
TJLduck: LineElement[i].setText( Data.get(i)); 不是這樣才會過 03/20 14:20
easterday: 最後檢查Log發現,如果把Horizontal和LayoutParam拿掉 03/20 22:26
easterday: 就不會當機了,但是這樣很醜... 03/20 22:27