在更新recyclerview时获取indexoutofBoundSexception错误
嗨,我想删除数据库中的行,该行在回收器视图中显示,当我单击“删除”按钮时,数据已删除,但我的recyclerview不会更新,并且我的应用程序崩溃了。
这是我的删除方法
public int deleteNote(int id) {
SQLiteDatabase db = getWritableDatabase();
return db.delete(TABLE_NAME,"id=?",new String[] {String.valueOf(id)});
}
,这是我的RV适配器中的Popop菜单,当我单击删除数据库行时,我的应用程序崩溃了,
holder.more.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popupMenu = new PopupMenu(c,holder.more);
popupMenu.inflate(R.menu.more_menu);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id.delete:
Note note = notes.get(position);
NoteDBAdapter noteDBAdapter = new NoteDBAdapter(c);
int result = noteDBAdapter.deleteNote(notes.get(position).getId());
if (result > 0){
Toast.makeText(c, "success", Toast.LENGTH_SHORT).show();
notes.remove(notes.get(position));
notifyDataSetChanged();
}else {
Toast.makeText(c, "failed", Toast.LENGTH_SHORT).show();
}
default:
return false;
}
}
});
popupMenu.show();
}
});
我会感谢任何提示...(:
Hi I want to delete row in my database which is being displayed in a Recycler View, While I click the delete button the data is deleted but my recyclerView will not update and my app crashes.
here is my delete method
public int deleteNote(int id) {
SQLiteDatabase db = getWritableDatabase();
return db.delete(TABLE_NAME,"id=?",new String[] {String.valueOf(id)});
}
and here is my popop menu in RV Adapter which when i click on delete the row of database is deleted but my app crashes
holder.more.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popupMenu = new PopupMenu(c,holder.more);
popupMenu.inflate(R.menu.more_menu);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id.delete:
Note note = notes.get(position);
NoteDBAdapter noteDBAdapter = new NoteDBAdapter(c);
int result = noteDBAdapter.deleteNote(notes.get(position).getId());
if (result > 0){
Toast.makeText(c, "success", Toast.LENGTH_SHORT).show();
notes.remove(notes.get(position));
notifyDataSetChanged();
}else {
Toast.makeText(c, "failed", Toast.LENGTH_SHORT).show();
}
default:
return false;
}
}
});
popupMenu.show();
}
});
i would appreciate any tip...(:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您尝试从数组超出其大小的数组中选择一个值时,就会发生indexoutofBoundSexception。
检查阵列或任何此类内容,例如从何处存储数据并获取数据。
IndexOutOfBoundsException occurs when you try to select a value from an array that goes beyond its size.
Check the array or any such stuff like from where you are storing data and getting it.