我有一個ArrayAdapter
與ArrayList
填充。每次點擊其任何項目時,我都會重新填寫ArrayList
並將notifyOnDataSetChange()
發送到adapter
。但對於我來說未知的原因,它在ArrayList
範圍內的getView()
方法中填充它的項目。我不明白爲什麼會發生這種情況。你們可以解釋getView()
invokation的理論,所以我明白爲什麼會這樣。提前致謝!ArrayAdapter超出界限
這就是:
class MAdapter extends ArrayAdapter<String> {
public MAdapter(Context context, int textViewResourceId, List<String> objects) {
super(context, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.file_explorer_row, null);
} else {
}
String txt = itemsList.get(position); // Out of bounds happens here
if (!txt.equals("")) {
TextView tt = (TextView) v.findViewById(R.id.file_explorer_tv_filename);
tt.setText(txt);
}
return v;
}
itemsList
在外部類中聲明。
這裏itemsList,你宣佈.. – 2012-07-07 11:48:45
不是通過ArrayAdapter擴展適配器類,由BaseAdapter.implement擴展它的四種方法,包括在getCount將arrayList.size() ()函數並在剩下的兩個itemid函數中返回位置 – AkashG 2012-07-07 11:50:56
R u再次填充整個ArrayList,或者只是將少量東西附加到列表中? – 2012-07-07 11:56:11