2017-06-17 68 views
0

我使用自定義的CursorAdapter來顯示SQLite數據庫中的用戶數據。 每個ListView項目實際上是一個包含許多TextView的佈局。從ListView項目訪問SQLite記錄?

CursorAdapter.bindView()方法我從Cursor獲取數據庫數據,並向用戶顯示修改後的更漂亮的版本。這就是我的意思是:

public void bindView(View view, Context context, Cursor cursor) { 
    //get listview items Views 
    TextView dayTextView = (TextView)view.findViewById(R.id.listview_item_day); 
    //... 

    //get data from cursor 
    int day = cursor.getInt(1); 
    //... 

    //display data nicely to the user 
    String sDay = "Day number " + String.valueOf(day) " was a very nice day"; 

    dayTextView.setText(sDay); 
} 

我想,當用戶長點擊一個項目(我將使用OnItemLongClickListener爲),該項目將被刪除(易peasy)我也想刪除來自數據庫的一天記錄。

當ListView項被點擊,我提供給我的下一個參數(在OnItemLongClickListener):

AdapterView<?> adapterView, View view, int position, long id 

我如何從所有這些參數的數據庫記錄?我可以使用TextView.getText()並將一些字符串操作方法應用到結果中(記住,我在將數據設置到ListView之前向數據添加了字符串),但我覺得還有另一種更聰明的方法。

回答

1

您可能會使用List<Integer> days = new Arraylist<>();來保留您正在修改的日期,因此列表的索引一直與位置相同,您可以通過days.get(position)獲取日期內容並從數據庫中獲取項目。

你應該定義你的列表出來的bindView

+0

我將不得不更新'days'內'bindView()',對吧?我如何知道'bindView()'中的每個'View'將決定哪個位置? – Pilpel

+0

在您的bindView中,您可以通過以下方式獲取您的位置:cursor.getPosition(); – Meikiem

+0

它從位置0開始到列表的末尾,並且每次在bindView內添加到dayslist.add(day)。你明白了嗎? – Meikiem