2010-09-02 125 views
4

我有一個使用自定義CursorAdaptor的SQLDatabase的列表視圖。我想回到我用來創建項目的活動,當我點擊他們在listview.so,我可以編輯條目。但是,當我在CursorAdapter上實現OnItemClick方法和getItemId()時,沒有任何事情發生,即使我不知道我在那裏是否正確。這是我的代碼:在ListView中編輯列表項目

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

     Cursor c = adapter.retrieveRow(rowId); // retrieve row from Database 
      Intent edit = new Intent(this,NewItem.class); 
     edit.putExtra(DBAdapter.KEY_ID, rowId); 
      edit.putExtra(DBAdapter.Title, c.getString(c.getColumnIndex(DBAdapter.Title))); 
     edit.putExtra(DBAdapter.DATE, c.getString(c.getColumnIndex(DBAdapter.DATE))); 
      startActivity(edit); 
     } 

public long getItemId(int id){ 
      return id; 
     } 

回答

3

我認爲你需要設置的列表視圖的onItemClickListener而不是試圖去實現它的適配器類。

例:

mListView = (ListView)findViewbyId(R.id.whatever) 
mListView.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View view, int position, 
        long rowId) { 
       Cursor c = adapter.retrieveRow(rowId); // retrieve row from Database 
       Intent edit = new Intent(this,NewItem.class); 
       edit.putExtra(DBAdapter.KEY_ID, rowId); 
       edit.putExtra(DBAdapter.Title, c.getString(c.getColumnIndex(DBAdapter.Title))); 
       edit.putExtra(DBAdapter.DATE, c.getString(c.getColumnIndex(DBAdapter.DATE))); 
       startActivity(edit); 
      } 
     }); 

這是你在做什麼?

+0

QRohlf,這正是我所做的,但沒有任何反應。甚至不是一個錯誤。順便說一句,如果這有助於擴展ListActivity。 – irobotxxx 2010-09-02 15:54:27

+0

我編輯了我的答案,包括一個例子 - 這應該工作(這是我如何處理我所有的ListView點擊)。如果這*是*你正在做的事情,那麼我建議添加一些日誌記錄來查看正在發生的事情,或者使用斷點來查看它是否真正被調用。 – QRohlf 2010-09-02 16:27:37

+0

oops ..我的不好。我仍然以J2me樣式格式實現我的聽衆,所以我忘了setOnClickListener(this)。順便說一下,它的工作原理,但當我點擊一個項目,它之前它的條目返回,而不是實際的重點項目。不知道爲什麼,但我猜測應該不會太麻煩。再次感謝 – irobotxxx 2010-09-02 17:41:59