2011-11-08 75 views
1

我完成了記事本教程第2部分和各種工作正常。 但有一件事我只是不容弄清楚爲什麼它的工作;)Android記事本教程 - onListItemClick

的onListItemClick回調retreives參數:

  • 的ListView L - 檢查
  • 視圖V - 檢查
  • 位置 - 用戶點擊的項目的位置,從基於零的索引開始(對吧?)
  • id - 用戶關聯的項目的行ID

這似乎是像在SqlLite數據庫表中使用的相同的rowId「註釋」...但是在哪裏呢,ListActivity知道我們使用這個列作爲行ID? 我沒有找到列表和數據庫表之間的任何映射,只是我們在fillData中綁定的遊標。 但在標題欄和用戶界面中的text1標識之間只有一個映射。 那麼rowId綁定在哪裏?如果我想改變對其他來源的綁定呢?提前

THX 亞歷

+0

from _id column in Cursor ... – Selvin

回答

0

SimpleCursorAdapter(在fillData()方法中)將數據庫光標的數據綁定到列表視圖。無論什麼時候點擊一個項目,CursorAdapter都會實現哪個項目被點擊,並通過id到列表活動。

+0

感謝您的回答。但是NotesDBAdapter中的deleteNote()操作如何?它接收rowId並執行一個刪除操作,如return mDb.delete(DATABASE_TABLE,KEY_ROWID +「=」+ rowId,null)。使用AdapterContextMenuInfo.id在onContextItemSelected()中調用dleteNote()方法。這也意味着UI中的rowId在數據庫中必須相同?或者這只是「隨機」?對不起我困惑;) –

0

這並不像SQL中的ROWID。數據庫與表單元素完全不同。

rowID在這個上下文中是一個簡單的基於0的索引,告訴你你點擊了什麼。你的光標只是從表格中填充數據到ListView中。除非您直接查詢ContentProviders或SQLite查詢,否則不必選擇行。

我希望這有助於!

+0

感謝您的回答,但是這引發了另外2個問題: 如果這不是數據庫的rowID,爲什麼我們只需將onListItemClick方法中的'id'參數意圖像editIntent.putExtra(NotesDbAdapter.KEY_ROWID,id)?這會推斷出DB.rowID = ListView.Id。 另一個問題是位置和ID參數之間的區別?在我的例子中,我有2個條目,我點擊第二個位置= 1和rowId = 4,假設我在調試之前添加和刪除了註釋。 –

+0

這些問題是什麼? – Codeman

+0

@Alexander Beer看到我的評論...無論如何...它可以是數據庫中的ROWID或者表中的任何其他PK ......您只需要在查詢中「重命名」它就像「SELECT blabla AS _id,rest ,列,去,在這裏從表「...編輯:忘了提及...在sqlite AFAIK,如果你使用你自己的整數/長PK,ROWID指向此列 – Selvin

相關問題