在RecyclerView中删除基于游标的项目

imi*_*min 8 android android-recyclerview

这是我的recyclerView编码(部分):

expensesListCursor = dbc.listExpenses(selectedDate);
mLayoutManager = new LinearLayoutManager(getActivity());
            rvExpenses.setLayoutManager(mLayoutManager);
            rvExpenses.setItemAnimator(new DefaultItemAnimator());

            mAdapter = new AdapterExpensesList(expensesListCursor,getActivity());
            rvExpenses.setAdapter(mAdapter);
Run Code Online (Sandbox Code Playgroud)

这是我的dbc.ListExpenses的编写方式

public Cursor listExpenses(String date){
        Cursor cursor;
        cursor = database.query(MySQLiteHelper.TABLE_EXPENSES, new String[] {"rowid as _id", "description, cost"}, "date='" + date + "'", null, null, null, "_id asc");

        if (cursor != null) {
            cursor.moveToFirst();
        }
        return cursor;
    }
Run Code Online (Sandbox Code Playgroud)

以下是AdapterExpensesList的编写方式

public class AdapterExpensesList extends RecyclerView.Adapter<AdapterExpensesList.ViewHolder> {

 Cursor myDataCursor;

public AdapterExpensesList(Cursor expensesListCursor, Context context){
            myDataCursor = expensesListCursor;

    }
Run Code Online (Sandbox Code Playgroud)

正如您可能在上面看到的那样,我的RecyclerView中的项目直接来自光标.我现在的问题是,我想实现该功能以删除RecyclerView中的一些数据.从我在网上找到的例子来看,他们通常是这样做的:

private ArrayList<String> mDataset;
public void remove(String item) {
    int position = mDataset.indexOf(item);
    mDataset.remove(position);
    notifyItemRemoved(position);
  }
Run Code Online (Sandbox Code Playgroud)

问题是我的数据是一个游标对象,而游标没有像ArrayList那样的.remove(位置).那么我如何实现同样的目标,即从某个位置删除某些数据呢?

注意:我只想从特定(选定)位置删除数据,而不是数据库本身内的数据.

Rey*_*hra 0

您无法从光标中删除项目,请在此处检查。

/sf/answers/470745061/

相反,您可以转换列表https://www.javatpoint.com/java-list或 arraylist https://www.javatpoint.com/java-arraylist中的光标项目

并完成你的任务。