2016-02-04 29 views
0
  • 我有顯示列表視圖的活性。我可以從ListView彈出菜單訪問ListView項目數據和底層數據庫數據嗎?

  • 的列表視圖使用一個CursorAdapter顯示來自一個SQLite數據庫中讀取數據。

  • 我已經實現了一個按鈕出現在每個ListView項目。
  • 點擊按鈕調用一個'onClickListener',它顯示一個彈出菜單(通過膨脹'PopupMenu')。
  • 我需要從onMenuItemClick處理程序中的ListView項訪問數據,以便繼續處理。

有沒有什麼辦法可以做到這一點?

我問裏面的代碼這個問題的一個更長的版本,但所以我想這可能是太長了,現在我已經刪除了它,它沒有得到任何迴應。

我的代碼表明,我已盡力實現單擊處理有兩種方式: -

  • 通過XML安卓的onClick,因此點擊處理程序出現在活動代碼
  • 和動態,因此點擊處理程序出現在CursorAdapter代碼中。

我不能找到一種方法來訪問列表中的每個項目的數據。似乎沒有辦法通過View參數進入它。而onMenuClick僅通過「菜單項」

感謝您能夠提供

Sceenshot of my ListView

看來我可能會去有關實現popoup菜單中的錯誤的方式任意方向?

+0

問'適配器'爲你做... ...? – Shark

+0

努力工作。但是,所有適配器給我的是它上次讀取的數據,即列表視圖中的底部(或頂部)項目(取決於我上次滾動的方式)。感謝您的評論 – SimonH

+0

我不敢相信這個非常直接的要求並不容易或明顯 - ListView Items中的彈出式菜單肯定很平常,而且大多數應用程序都希望對ListItem數據做些什麼.... ...但是我可以通過將數據庫表鍵作爲標記傳遞給按鈕視圖來解決問題。骯髒的黑客的位,這意味着我必須再次閱讀數據庫,所以它不是理想的。哦,至少我可以克服這個問題 – SimonH

回答

0

爲了完整起見,這裏是我的解決方案。

我從來沒有找到直接訪問ListItem數據的方法。

相反,在CursorAdapterbindView我添加了標籤的ListViewbutton,抱着ListItem位置,和數據庫項目鍵值。

然後在按鈕上點擊處理程序,我讀取標記並將鍵值和(Cursor) mListview.getAdapter().getItem(mSelectedBikePosition)保存在要處理的onMenuItemClick處理程序中使用的成員變量中。