2010-09-02 74 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