как удалить элемент из корзины покупок нажатием кнопки в Android - PullRequest
0 голосов
/ 12 октября 2019

Я могу удалить товар из списка покупок долгим нажатием на выбранный товар с помощью следующего кода

  listcart.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
           @Override
           public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {


               model=d.get(i);
               final String orderno=model.getOrderno();
               AlertDialog.Builder msg=new AlertDialog.Builder(CartActivity.this)
                       .setTitle("Delete Item")
                       .setMessage("Are you sure delete this item "+model.getItemname())
                       .setIcon(R.drawable.applogo)
                       .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                           @Override
                           public void onClick(DialogInterface dialogInterface,int i){
                               DBLite db=new DBLite(CartActivity.this);
                               db.DeleteItem(orderno);
                               d=new ArrayList<>(db.GetCart(CartActivity.this));
                               adapterCart=new Cart_Adapter(CartActivity.this,d);
                               listcart.setAdapter(adapterCart);
                               txtOrderTotal.setText(String.valueOf(db.GetSum()));

                           }
                       }).setNegativeButton("No",null);
               msg.create();
               msg.show();
               return false;
           }
    });

Я хочу удалить этот товар, нажав (x) изображение. Как я могу настроить этот код для этой цели. Как изображение, приложенное

скриншот из приложения

Ответы [ 3 ]

0 голосов
/ 12 октября 2019

Нет необходимости заново настраивать адаптер, если он уже загружен. Попробуйте этот код в диалоговом окне положительной кнопки вашего AlertDialog(), которая будет вызываться из вашего onBindViewHolder() метода в классе вашего адаптера.

 <yourViewHolderObject>.deleteIcon.setOnClickListener(new AdapterView.OnClickListener() { 
  // like: deleteIcon = view.findViewById(R.id.deleteIcon);
       @Override
       public boolean onClick(View view, int i) {

           model=d.get(i);
           final String orderno=model.getOrderno();
           AlertDialog.Builder msg=new AlertDialog.Builder(CartActivity.this)
                   .setTitle("Delete Item")
                   .setMessage("Are you sure delete this item "+model.getItemname())
                   .setIcon(R.drawable.applogo)
                   .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                       @Override
                       public void onClick(DialogInterface dialogInterface,int i){
                           DBLite db=new DBLite(CartActivity.this);
                           db.DeleteItem(orderno);
                           // Also delete this item from your current list
                           listcart.remove(model);
                           d=new ArrayList<>(db.GetCart(CartActivity.this));
                           adapterCart=new Cart_Adapter(CartActivity.this,d);
                           //listcart.setAdapter(adapterCart); // exclude this
                           adapterCart.notifyDataSetChanged(); // include this
                           // this line your reload and update your list
                           txtOrderTotal.setText(String.valueOf(db.GetSum()));

                       }
                   }).setNegativeButton("No",null);
           msg.create();
           msg.show();
           return false;
       }
});

, дайте мне знать, если это поможет вам. Счастливого кодирования

0 голосов
/ 13 октября 2019

я нашел способ, и он работает. я имею дело с кнопкой удаления через активность cartAdapter, в которой c = context, ass = arrayList <>

   viewHolder.imgdelete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            AlertDialog.Builder msg=new AlertDialog.Builder(c)
                    .setTitle("Delete Item")
                    .setMessage("Are you sure delete this item "+data.getItemname())
                    .setIcon(R.drawable.applogo)
                    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface,int i){
                            DBLite db=new DBLite(c);
                            db.DeleteItem(data.getOrderno());
                            ass=new ArrayList<>(db.GetCart(c));
                            adapterCart=new Cart_Adapter(c,ass);
                            listcart.setAdapter((ListAdapter) adapterCart);
                            txtOrderTotal.setText(String.valueOf(db.GetSum()));

                        }
                    }).setNegativeButton("No",null);
            msg.create();
            msg.show();
        }
    });
0 голосов
/ 12 октября 2019

Сделать кнопку внутри макета вашего элемента. Возьмите его ссылку в вашем классе адаптера Cart_Adapter и сделайте это внутри метода getView () вашего адаптера (если это BaseAdapter или ArrayAdapter). Но если это адаптер повторного просмотра, напишите это в методе onBindView () этого:

    viewholder.deleteButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // write code here to delete item and refresh adapter
        }
    });
...