Java 正在从listview中删除行为异常的项

Java 正在从listview中删除行为异常的项,java,android,listview,arraylist,Java,Android,Listview,Arraylist,我有一个扩展基本适配器的listview。每个列表项上都有一个删除按钮。单击删除按钮时,应删除列表项。但当我尝试这样做时,listview的行为很奇怪。删除按钮是导致主要问题的原因。有时列表会翻倍,有时应用程序会崩溃。我正在尝试向listview的项目添加删除按钮。当有人单击该按钮时,列表项将被删除,并且它也将从firebase中删除该项 我正在努力做到这一点。 对不起,我的英语不好。提前感谢您的帮助。 package com.owoshopkeeperpanel.adapters; imp

我有一个扩展基本适配器的listview。每个列表项上都有一个删除按钮。单击删除按钮时,应删除列表项。但当我尝试这样做时,listview的行为很奇怪。删除按钮是导致主要问题的原因。有时列表会翻倍,有时应用程序会崩溃。我正在尝试向listview的项目添加删除按钮。当有人单击该按钮时,列表项将被删除,并且它也将从firebase中删除该项

我正在努力做到这一点。

对不起,我的英语不好。提前感谢您的帮助。

package com.owoshopkeeperpanel.adapters;

import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.DataSetObserver;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.cepheuen.elegantnumberbutton.view.ElegantNumberButton;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.owoshopkeeperpanel.Interface.ItemClickListener;
import com.owoshopkeeperpanel.Model.Cart;
import com.owoshopkeeperpanel.Prevalent.Prevalent;
import com.owoshopkeeperpanel.R;

import java.util.ArrayList;

public class CartListAdapter extends BaseAdapter {
    private Context mCtx;
    private ArrayList<Cart> cartList;

    final DatabaseReference cartListRef = FirebaseDatabase.getInstance().getReference().child("Cart List");

    public CartListAdapter(Context mCtx, ArrayList<Cart> cartList) {
        this.mCtx = mCtx;
        this.cartList = cartList;
    }

    @Override
    public int getCount() {
        return cartList.size();
    }

    @Override
    public Object getItem(int position) {
        return cartList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        Cart cart = cartList.get(position);

        if(convertView==null) {
            LayoutInflater layoutInflater = (LayoutInflater) mCtx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = layoutInflater.inflate(R.layout.cart_items_sample, null);

        }
            ImageView delete = convertView.findViewById(R.id.cart_item_delete);
            ImageView cart_product_image = convertView.findViewById(R.id.cart_product_image);
            TextView cart_product_name = convertView.findViewById(R.id.cart_product_name);
            TextView cart_product_quantity = convertView.findViewById(R.id.cart_product_quantity);
            TextView cart_product_price = convertView.findViewById(R.id.cart_product_price);
            ElegantNumberButton cart_item_change_button = convertView.findViewById(R.id.cart_item_change_btn);

            Glide.with(mCtx).load(cart.getProduct_image()).into(cart_product_image);

            cart_product_name.setText(cart.getProduct_name());
            cart_product_quantity.setText(cart.getProduct_price()+" × "+cart.getNeeded_quantity());
            double product_total_price = Double.parseDouble(cart.getProduct_price()) * Double.parseDouble(cart.getNeeded_quantity());
            cart_product_price.setText("৳ "+String.valueOf(product_total_price));
            cart_item_change_button.setNumber(cart.getNeeded_quantity());

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

                    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mCtx);

                    alertDialogBuilder.setMessage("Are you sure you want to remove this item from cart ?");
                    alertDialogBuilder.setPositiveButton("yes",
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface arg0, int arg1) {
                                    cartListRef.child(Prevalent.currentOnlineUser.getPhone())
                                            .child(String.valueOf(cart.getProduct_id()))
                                            .removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
                                        @Override
                                        public void onComplete(@NonNull Task<Void> task) {
                                            if(task.isSuccessful())
                                            {
                                                Toast.makeText(mCtx, String.valueOf(cartList.size()), Toast.LENGTH_LONG).show();
                                                cartList.remove(cart);
                                                notifyDataSetChanged();
                                            }
                                        }
                                    });
                                }
                            });

                    alertDialogBuilder.setNegativeButton("No",new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {

                        }
                    });

                    AlertDialog alertDialog = alertDialogBuilder.create();
                    alertDialog.show();
                }
            });
        return convertView;
    }
}
package com.owoshopkeeperpanel.adapters;
导入android.content.Context;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.database.DataSetObserver;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseAdapter;
导入android.widget.ImageView;
导入android.widget.ListAdapter;
导入android.widget.TextView;
导入android.widget.Toast;
导入androidx.annotation.NonNull;
导入androidx.appcompat.app.AlertDialog;
导入androidx.recyclerview.widget.recyclerview;
导入com.bumptech.glide.glide;
导入com.cepheen.elegantnumberbutton.view.elegantnumberbutton;
导入com.google.android.gms.tasks.OnCompleteListener;
导入com.google.android.gms.tasks.Task;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入com.owoshopkeeperpanel.Interface.ItemClickListener;
导入com.owoshopkeeperpanel.Model.Cart;
导入com.owoshopkeeperpanel.convertive.convertive;
导入com.owoshopkeeperpanel.R;
导入java.util.ArrayList;
公共类CartListAdapter扩展了BaseAdapter{
私有上下文mCtx;
私有ArrayList目录;
final DatabaseReference cartListRef=FirebaseDatabase.getInstance().getReference().child(“购物车列表”);
公共CartListAdapter(上下文mCtx、ArrayList cartList){
this.mCtx=mCtx;
this.cartList=cartList;
}
@凌驾
public int getCount(){
返回cartList.size();
}
@凌驾
公共对象getItem(int位置){
返回cartList.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
购物车=购物车列表。获取(位置);
if(convertView==null){
LayoutInflater LayoutInflater=(LayoutInflater)mCtx.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
convertView=LayoutFlater.充气(R.layout.cart\u items\u sample,空);
}
ImageView delete=convertView.findViewById(R.id.cart\u item\u delete);
ImageView购物车\产品\图像=convertView.findViewById(R.id.cart\产品\图像);
TextView购物车产品名称=convertView.findViewById(R.id.cart产品名称);
TextView购物车产品数量=convertView.findViewById(R.id.cart产品数量);
TextView购物车产品价格=convertView.findViewById(R.id.cart产品价格);
ElegantNumberButton购物车项目变更按钮=convertView.findViewById(R.id.cart项目变更按钮);
使用(mCtx)滑动。将(cart.getProduct\u image())加载到(cart\u product\u image)中;
cart_product_name.setText(cart.getProduct_name());
cart_product_quantity.setText(cart.getProduct_price()+“×”+cart.getNeeded_quantity());
double product_total_price=double.parseDouble(cart.getProduct_price())*double.parseDouble(cart.getNeeded_quantity());
购物车产品价格。setText(“৳ "+String.valueOf(产品/总价);
购物车\项目\更改\按钮.setNumber(cart.getNeeded\数量());
delete.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
AlertDialog.Builder alertDialogBuilder=新建AlertDialog.Builder(mCtx);
alertDialogBuilder.setMessage(“您确定要从购物车中删除此项目吗?”);
alertDialogBuilder.setPositiveButton(“是”,
新建DialogInterface.OnClickListener(){
@凌驾
公共void onClick(对话框接口arg0,int arg1){
cartListRef.child(流行的.currentOnlineUser.getPhone())
.child(String.valueOf(cart.getProduct_id()))
.removeValue().addOnCompleteListener(新OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful())
{
Toast.makeText(mCtx,String.valueOf(cartList.size()),Toast.LENGTH_LONG.show();
cartList.remove(cart);
notifyDataSetChanged();
}
}
});
}
});
alertDialogBuilder.setNegativeButton(“否”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
}
});
AlertDialog AlertDialog=alertDialogBuilder.create();
alertDialog.show();
}
});
返回视图;
}
}

您好。如果您还添加了崩溃日志,那就太好了。您有吗