Deleting item from sqlite database error.
CustomAdapter
public class PassAdapter extends RecyclerView.Adapter<PassViewHolder> {
Context context;
MainActivity mainActivity;
private static final Object TAG = "SQLiteDatabaseInsert";
List<LoginData> loginDataArrayList;
DatabaseHelper databaseHelper;
private LoginData loginData;
SQLiteDatabase sqLiteDatabase;
private int position;
public PassAdapter(Context context, List<LoginData> loginDataArrayList) {
this.context = context;
this.loginDataArrayList = loginDataArrayList;
}
@NonNull
@Override
public PassViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(context.getApplicationContext()).inflate(R.layout.pass_item, viewGroup, false);
PassViewHolder holder = new PassViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull PassViewHolder holder, int position) {
holder.name_view.setText(loginDataArrayList.get(holder.getBindingAdapterPosition()).getName());
holder.login_view.setText(loginDataArrayList.get(holder.getBindingAdapterPosition()).getLogin());
holder.password_view.setText(loginDataArrayList.get(holder.getBindingAdapterPosition()).getPass());
holder.category_view.setText(loginDataArrayList.get(holder.getBindingAdapterPosition()).getCategory());
holder.menuImage.setImageResource(R.drawable.item_menu_icon);
holder.menuImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popupMenu = new PopupMenu(context.getApplicationContext(), v);
popupMenu.getMenuInflater().inflate(R.menu.menu_items, popupMenu.getMenu());
popupMenu.show();
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
ClipboardManager clipboard = (ClipboardManager) context.getApplicationContext().getSystemService(CLIPBOARD_SERVICE);
int idMenuItem = item.getItemId();
Integer getId = loginDataArrayList.get(holder.getBindingAdapterPosition()).getId();
String loginToCopy = loginDataArrayList.get(holder.getBindingAdapterPosition()).getLogin();
if (idMenuItem == R.id.copy_login) {
// copy login
ClipData loginClip = ClipData.newPlainText("Clip", String.valueOf(getId));
clipboard.setPrimaryClip(loginClip);
return true;
} else if (idMenuItem == R.id.copy_pass) {
// copy password
return true;
} else if (idMenuItem == R.id.delete_item) {
// delete item
Log.d("DetailAdapter", "Delete item with ID: " + String.valueOf(getId));
try {
databaseHelper.deleteItemById(getId);
removeItem(holder.getBindingAdapterPosition());
}
catch(Exception error) {
Log.d("DetailAdapter", "Error with delete item(error)");
error.printStackTrace();
}
}
return true;
}
});
}
});
}
@Override
public int getItemCount() {
return loginDataArrayList.size();
}
public void removeItem(int position) {
if (position >= 0 && position < loginDataArrayList.size()) {
loginDataArrayList.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, loginDataArrayList.size());
Toast.makeText(context, "Deleted...", Toast.LENGTH_SHORT).show();
}
}
}
Problem with deleting item
Log.d("DetailAdapter", "Delete item with ID: " + String.valueOf(getId));
try {
databaseHelper.deleteItemById(getId);
removeItem(holder.getBindingAdapterPosition());
}
catch(Exception error) {
Log.d("DetailAdapter", "Error with delete item(error)");
error.printStackTrace();
}
DatabaseHelper
public void deleteItemsByCategory(String categoryName) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_NAME, COLUMN_CATEGORY + " = ?", new String[]{categoryName});
db.close();
}
public void deleteItemById(Integer id) {
SQLiteDatabase db = this.getWritableDatabase();
int deletedRows = db.delete(TABLE_NAME, COLUMN_ID + " = ?", new String[]{String.valueOf(id)});
db.close();
if (deletedRows > 0) {
Log.d("DatabaseHelper", "Item with ID " + String.valueOf(id) + " was deleted.");
} else {
Log.d("DatabaseHelper", "No item with ID " + String.valueOf(id) + " was found.");
}
}
In debug get right ID number
Integer getId = loginDataArrayList.get(holder.getBindingAdapterPosition()).getId();
But after call databaseHelper.deleteItemById get this error.
In database have items, with right IDs, have normal list from DB.
I dont understand what cant see. Please help.
2024-07-23 23:03:09.775 933-933 System.err com.theray.passbox W java.lang.NullPointerException: Attempt to invoke virtual method 'void com.user.passbox.DatabaseHelper.deleteItemById(java.lang.Integer)' on a null object reference
2024-07-23 23:03:09.778 933-933 System.err com.theray.passbox W at com.theray.passbox.PassAdapter$1$1.onMenuItemClick(PassAdapter.java:122)
2024-07-23 23:03:09.778 933-933 System.err com.theray.passbox W at android.widget.PopupMenu$1.onMenuItemSelected(PopupMenu.java:109)
Delete object from database.
(This app want from me add some text so i doit(Is too coded :D)
fdasjgfjswgtfrwesfbsdjuhgsdfsdjbfjugwsefruewuitfgweifhowefjpoqajfcisvuffgsdufgurguweqigruiewgru