0
我用遊標一類擴展BaseAdapter,如何獲得的所有值光標
class NewDefinedAdapter extends BaseAdapter {
private Cursor cursorTitle;
private TextView title;
private LayoutInflater mInflater;
private LinearLayout layout;
public NewDefinedAdapter(Context text, Cursor cursor) {
cursorTitle = cursor;
mInflater = LayoutInflater.from(text);
}
public int getCount() {
return cursorTitle.getCount();
}
public Object getItem(int arg0) {
return arg0;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
layout = (LinearLayout) mInflater.inflate(R.layout.title_list, null);
title = (TextView) layout.findViewById(R.id.title);
title.setText(cursorTitle.getString(0));
return layout;
}
}
我調用這個類是這樣的:
cursor.moveToFirst();
view.setAdapter(new NewDefinedAdapter(this, cursor));
的cursor.getCount()= 10,但Finnaly,我得到了10個相同的結果。之後,我加入cursor.MoveToNext(),程序運行異常:
layout = (LinearLayout) mInflater.inflate(R.layout.title_list, null);
title = (TextView) layout.findViewById(R.id.title);
title.setText(cursorTitle.getString(0));
cursorTitle.moveToNext();
return layout;
異常信息:
04-07 14:27:28.565: D/AndroidRuntime(26155): Shutting down VM
04-07 14:27:28.565: W/dalvikvm(26155): threadid=1: thread exiting with uncaught exception (group=0x40015560)
04-07 14:27:28.575: E/AndroidRuntime(26155): FATAL EXCEPTION: main
04-07 14:27:28.575: E/AndroidRuntime(26155): android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 10
04-07 14:27:28.575: E/AndroidRuntime(26155): at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
所以,我應該得到光標的所有值,謝謝。
是的,它現在可以工作,但我有一個問題:如果「位」是自動增量,什麼是使用MoveToNext()和moveToPosition(位置) – Jake 2012-04-07 14:54:22
@Jake之間的區別moveToPosition()會根據ListView中的行位置來定位遊標,所以你永遠不會超過Cursor邊界。使用'moveToNext()',每次'getView()'時都會移動'Cursor'(我甚至在ListView中需要顯示任何行之前調用方法),並調用方法你擺脫了「光標」限制。 – Luksprog 2012-04-07 15:03:23