Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android RecyclerView中的删除操作不执行任何操作_Android_Sqlite_Android Recyclerview_Android Sqlite - Fatal编程技术网

Android RecyclerView中的删除操作不执行任何操作

Android RecyclerView中的删除操作不执行任何操作,android,sqlite,android-recyclerview,android-sqlite,Android,Sqlite,Android Recyclerview,Android Sqlite,这是适配器(RVAdapter\u remementers.java) 最后,提醒契约类: public static final String TITLE = "title"; 您的mAdapter仍具有已删除值的值。您必须更新dbList以获得当前值 private void on提醒删除(字符串标题){ dbHelper.deleteARow(标题); 删除(/*要删除的值*/); mAdapter.notifyDataSetChanged(); } 我实现了你所说

这是适配器(RVAdapter\u remementers.java

最后,提醒契约类:

 public static final String TITLE = "title";

您的
mAdapter
仍具有已删除值的值。您必须更新
dbList
以获得当前值

private void on提醒删除(字符串标题){
dbHelper.deleteARow(标题);
删除(/*要删除的值*/);
mAdapter.notifyDataSetChanged();
}

我实现了你所说的dbHelper.deleteARow(title);dbList.remove(位置);mAdapter.notifyDataSetChanged();但是它仍然没有做任何事情。为什么要在适配器中设置
dbList
context
静态
?使其非静态。另外,适配器中dbList的第一次初始化已经过时,因为您使用
this.dbList=dbList
Umm初始化它。做了你推荐的,但结果还是一样的。顺便说一句,删除项目后应该有Log.d条目,但也没有。因此,我认为问题可能是因为deleteARow()函数甚至没有被调用?请输入
onContextItemSelected(MenuItem项)
以查看它是否会按预期执行,日志中的nothing(onContextItemSelected(MenuItem项))因此,问题出在菜单的某个地方。
 FloatingActionButton fab;
DBHelper dbHelper;
List<DatabaseModel> dbList;
RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_reminders);
    fab = (FloatingActionButton) findViewById(R.id.fab);

    try {
        getSupportActionBar().setTitle("Reminders");
    } catch (Exception e) {
        e.printStackTrace();
    }

    dbHelper = new DBHelper(this);
    dbList = new ArrayList<DatabaseModel>();
    dbList = dbHelper.getDataFromDB();

    mRecyclerView = (RecyclerView) findViewById(R.id.rv_reminders);
    mRecyclerView.setHasFixedSize(true);

    // using a linear layout manager
    mLayoutManager = new LinearLayoutManager(this);
    mRecyclerView.setLayoutManager(mLayoutManager);

    //specifying an adapter
    mAdapter = new RVAdapter_Reminders(this, dbList);
    mRecyclerView.setAdapter(mAdapter);

    registerForContextMenu(mRecyclerView);

}


public void addReminder(View view) {
    Intent intent = new Intent(Reminders.this, NewReminder.class);
    startActivity(intent);
}

@Override
public void onBackPressed() {
    Intent intent = new Intent(Reminders.this, MainActivity.class);
    startActivity(intent);
}

@Override
public boolean onContextItemSelected(MenuItem item) {
    int position = -1;

    try{
        position = ((RVAdapter_Reminders)mRecyclerView.getAdapter()).getPosition();
    }catch (Exception e) {
        Log.d(String.valueOf(this), e.getLocalizedMessage(), e);
        return super.onContextItemSelected(item);
    }

    switch (item.getItemId()){
        case R.id.menu_delete_option:
            onReminderDelete(dbList.get(position).getTitle());
            break;
    }

    return super.onContextItemSelected(item);
}

private void onReminderDelete(String title){
        dbHelper.deleteARow(title);
        mRecyclerView.setAdapter(mAdapter);
}
public void deleteARow(String title) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(REMINDERS_TABLE, RemindersContract.TITLE + " = " + title, null);
    Log.d(String.valueOf(this), title + " deleted");
    db.close();
}
 public static final String TITLE = "title";