2010-09-14 17 views
0

美好的一天,你能幫我看看這個代碼,並告訴我什麼是做錯了。我有一個從光標適配器的列表視圖,但是當我點擊一行時,它返回它上面的行,而不是單擊目標行。這導致如果你點擊第一行,它會崩潰,出現「遊標超出限制的異常」。但是當我在意圖調用之前添加c.moveToFirst()並且點擊第一行時,它什麼都不做。請這裏是代碼:光標不返回當前行在android listview點擊

public void onItemClick(AdapterView<?> parent, View view, int position, long rowId) { 

    c = adapter.retrieveRow(rowId); 

Intent edit = new Intent(this,Item.class); 
edit.putExtra(DBAdapter.KEY_ID, rowId); 
edit.putExtra(DBAdapter.NAME, c.getString(c.getColumnIndex(DBAdapter.NAME))); 
edit.putExtra(DBAdapter.START_DATE, c.getString(c.getColumnIndex(DBAdapter.START_DATE))); 
startActivityForResult(edit, ACTIVITY_EDIT); 
} 

這裏是正在調用數據庫的方法:

public Cursor retrieveRow(long rowId) { 
String[] resultColumns = new String[] {NAME,START_DATE}; 
      Cursor row = db.query(true,DATABASE_TABLE, resultColumns, KEY_ID +"=" +rowId, null, null, null, null,null); 
    if(row != null){ 
      row.moveToFirst(); 
    } 
    return row; 
    } 

我試圖將其更改爲一個OnListItemSelected(),但什麼都沒有發生,但它並沒有返回任何東西all.I在遊標適配器上使用新的視圖和綁定視圖方法。提前致謝。

回答

0

嘗試替換c = adapter.retrieveRow(rowId);

with c = adapter.getItem(position);

並註釋掉你的retrieveRow方法

+0

你好,我似乎得到一個錯誤,當我使用你的建議。該方法沒有在我的listview中定義。我使用OnClickListener的列表視圖,或者我應該使用OnItemSelected偵聽器?感謝 – Rexx 2010-09-15 00:14:47

+0

意味着OnItemClickListener。對不起 – Rexx 2010-09-15 00:23:22

+0

它應該是OnItemClickListener()。但不管getItem是不是偵聽器的方法,而是cursoradapter的方法 - 你確實使用了光標適配器嗎? – 2010-09-15 14:26:39