[問題] 想問有關BaseAdapter的問題...

看板AndroidDev作者 (....)時間10年前 (2015/03/19 19:45), 10年前編輯推噓3(304)
留言7則, 4人參與, 最新討論串1/1
大家都知道如果要實作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

03/19 20:36, , 1F
Log?
03/19 20:36, 1F

03/20 13:43, , 2F
你這程式編譯會過嗎?
03/20 13:43, 2F

03/20 13:44, , 3F
LineElement.setText( Data.get(i));
03/20 13:44, 3F

03/20 14:00, , 4F
樓上這行編譯可過 因為ArrayList<String>
03/20 14:00, 4F

03/20 14:20, , 5F
LineElement[i].setText( Data.get(i)); 不是這樣才會過
03/20 14:20, 5F

03/20 22:26, , 6F
最後檢查Log發現,如果把Horizontal和LayoutParam拿掉
03/20 22:26, 6F

03/20 22:27, , 7F
就不會當機了,但是這樣很醜...
03/20 22:27, 7F
文章代碼(AID): #1L2hREtm (AndroidDev)