从ListView项目访问SQLite记录?

问题描述:

我使用自定义的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之前向数据添加了字符串),但我觉得还有另一种更聪明的方法。

您可能会使用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