[問題] 想問有關BaseAdapter的問題...
大家都知道如果要實作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
03/19 20:36, 1F
推
03/20 13:43, , 2F
03/20 13:43, 2F
→
03/20 13:44, , 3F
03/20 13:44, 3F
→
03/20 14:00, , 4F
03/20 14:00, 4F
推
03/20 14:20, , 5F
03/20 14:20, 5F
→
03/20 22:26, , 6F
03/20 22:26, 6F
→
03/20 22:27, , 7F
03/20 22:27, 7F