我正在爲ListView編寫我自己的適配器,但我遇到了一些概念問題。首先,這是我寫的:誰在ArrayAdapter中調用getView()?
public class MyArrayAdapter extends ArrayAdapter<String> {
private final Context context;
private final int parent;
private final String[] values;
public MyArrayAdapter(Context context, int resourceid, String[] values) {
super(context, -1, values);
this.context = context;
this.parent = resourceid;
this.values = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.rowlayout, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.label);
ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
textView.setText("abcde lorem ipsum");
String s = values[position];
imageView.setImageResource(R.drawable.no);
return rowView;
}
}
正如你們所看到的,我加了RESOURCEID作爲構造函數的參數,因爲this page告訴我,它必須採取3個參數。但是,在this article的3.3示例中,當它寫入自定義適配器時,它使用構造函數的2個參數。但是如果我不通過R.layout.rowlayout
作爲參數在構造函數中,getView如何知道誰是ViewGroup parent
?我的意思是,必須調用getView,並且父對象必須傳遞給它。但是班級如何知道誰是家長?
另外,Android的頁面指示我這樣稱呼它:
MyArrayAdapter<String> adapter = new MyArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, myStringArray);
但我最終不得不採取<String>
,並擱置這樣的:
MyArrayAdapter adapter = new MyArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, myStringArray);
爲什麼?
是否因爲文章擴展了課程而未使用<String>
?就像這樣:
public class MyArrayAdapter extends ArrayAdapter<String> {
而且,由於我重寫類,爲什麼我需要調用使用super
原來的構造?