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