这是我的recyclerView编码(部分):
expensesListCursor = dbc.listExpenses(selectedDate);
mLayoutManager = new LinearLayoutManager(getActivity());
rvExpenses.setLayoutManager(mLayoutManager);
rvExpenses.setItemAnimator(new DefaultItemAnimator());
mAdapter = new AdapterExpensesList(expensesListCursor,getActivity());
rvExpenses.setAdapter(mAdapter);
这里是我的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;
}
以及这里是如何编写AdapterExpensesList的
public class AdapterExpensesList extends RecyclerView.Adapter<AdapterExpensesList.ViewHolder> {
Cursor myDataCursor;
public AdapterExpensesList(Cursor expensesListCursor, Context context){
myDataCursor = expensesListCursor;
}
正如您可能在上面看到的那样,我的RecyclerView中的项目直接来自光标。我现在的问题是,我想实现该功能以删除RecyclerView中的一些数据。从我在网上找到的例子中,通常在这里他们是如何做到的:
private ArrayList<String> mDataset;
public void remove(String item) {
int position = mDataset.indexOf(item);
mDataset.remove(position);
notifyItemRemoved(position);
}
问题是我的数据是一个游标对象,并且游标没有像ArrayList那样的.remove(position)。那么我如何实现同样的目标,即从某个位置删除某些数据呢?
注意:我只想删除特定(选定)位置的数据,而不是数据库本身内的数据。
答案 0 :(得分:0)
您无法从光标中删除项目,请在此处查看。
https://stackoverflow.com/a/6724929/5492047
相反,您可以转换列表https://www.javatpoint.com/java-list或arraylist https://www.javatpoint.com/java-arraylist
中的光标项并完成你的任务。