Я пытаюсь удалить элемент из моего списка утилизации, а также из базы данных MySql, используя файл PHP. Я могу удалить запись из MySql правильно, но проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти способ удалить ее из RecyclerView. Пробовал искать решения, но не работал. Любая помощь будет очень признательна.
Я пробовал различные решения от самого StackOverflow, но они не работали для меня, потому что я не могу найти способ передать позицию выбранного представления в моем коде, чтобы удалить из списка.
Дайте мне знать, нужен ли еще какой-либо код.
Это мой код.
ExpenseEntryAdapter. java
public class ExpenseEntryAdapter extends RecyclerView.Adapter<ExpenseEntryAdapter.ExpenseViewHolder> {
private Context mCtx;
private List<GetDataActivity> expenseList;
int id;
public ExpenseEntryAdapter(Context mCtx, List<GetDataActivity> expenseList){
this.mCtx = mCtx;
this.expenseList = expenseList;
}
@Nullable
@Override
public ExpenseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(mCtx);
View view = inflater.inflate(R.layout.recycler_expense_view, null);
return new ExpenseViewHolder(view);
}
@Override
public void onBindViewHolder(ExpenseViewHolder holder, int position) {
GetDataActivity getDataActivity = expenseList.get(position);
holder.itmnm_txtvw.setText(getDataActivity.getItemname());
holder.itmdate_txtvw.setText(getDataActivity.getBatchdate());
holder.itmprice_txtvw.setText(String.valueOf(getDataActivity.getExpprice()));
holder.itmid_txtvw.setText(String.valueOf(getDataActivity.getId()));
}
@Override
public int getItemCount() {
return expenseList.size();
}
class ExpenseViewHolder extends RecyclerView.ViewHolder implements View.OnCreateContextMenuListener {
TextView itmnm_txtvw,itmdate_txtvw,itmprice_txtvw,itmid_txtvw;
private ExpenseViewHolder(View itemView) {
super(itemView);
itmid_txtvw = itemView.findViewById(R.id.txtvw_expense_itemid);
itmnm_txtvw = itemView.findViewById(R.id.txtvw_expenseentry_name);
itmdate_txtvw = itemView.findViewById(R.id.txtvw_expenseentry_date);
itmprice_txtvw = itemView.findViewById(R.id.txtvw_expenseentry_price);
itemView.setOnCreateContextMenuListener(this);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
menu.setHeaderTitle("Select Action");
MenuItem Delete = menu.add(Menu.NONE,1,1,"Delete");
Delete.setOnMenuItemClickListener(onEditMenu);
}
private void serverdelete(final int id){
StringRequest stringRequest2 = new StringRequest(Request.Method.POST
, Constants.URL_DELETE_EXPENSE_DATA, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(mCtx, response, Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(mCtx, error.toString(), Toast.LENGTH_SHORT).show();
}
}){
protected Map<String, String> getParams(){
Map<String, String> params = new HashMap<>();
params.put("item_id", String.valueOf(id));
return params;
}
};
RequestHandler.getInstance(mCtx).addToRequestQueue(stringRequest2);
}
private final MenuItem.OnMenuItemClickListener onEditMenu = new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case 1:
serverdelete(expenseList.get(getAdapterPosition()).getId());
break;
}
return true;
}
};
}
}