說明: 我知道這個問題沒有問。的時代。試着首先了解我的問題。我有一個listview,其中我使用了一個BaseAdapter來顯示我的listivew行上的動態項目,並且它不是一個固定的。我刪除了包含在該行中的數據,但刪除了該行。雖然我刪除了一行數據完全刪除,但不是一個列表視圖行。我想從列表中刪除一個特定的行。如何從android中的listview中刪除特定的行?
適配器
public class CartAdapter extends BaseAdapter {
private static final String TAG=CartAdapter.class.getSimpleName();
public Context context;
public List<CartItems> cartItemList;
public LayoutInflater inflater;
public AppCompatActivity activity;
public CartAdapter(Context context, List<CartItems> cartItemList,AppCompatActivity activity) {
this.context = context;
this.cartItemList = cartItemList;
this.activity=activity;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return this.cartItemList.size();
}
@Override
public Object getItem(int position) {
return this.cartItemList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
private class CartHolder {
TextView txtItemName, txtItemPrice, txtQtyCount;
ImageButton btnImgDelete;
}
@Override
public View getView(final int position, View view, ViewGroup viewGroup) {
final CartHolder holder;
if (view == null) {
holder = new CartHolder();
view = inflater.inflate(R.layout.cart_items, null);
holder.txtItemName = (TextView) view.findViewById(R.id.txt_item_name);
holder.txtItemPrice = (TextView) view.findViewById(R.id.txt_item_price);
holder.txtQtyCount = (TextView) view.findViewById(R.id.txt_qty_count);
holder.btnImgDelete=(ImageButton)view.findViewById(R.id.btn_img_delete);
holder.btnImgDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
final AlertDialog.Builder alertDialog=new AlertDialog.Builder(activity,R.style.MyAlertDialogStyle);
alertDialog.setTitle("Delete");
alertDialog.setIcon(R.drawable.ic_action_cancel);
alertDialog.setMessage("Do you really want to delete item??");
alertDialog.setCancelable(true);
alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
cartItemList.remove(position);
notifyDataSetChanged();
}
});
alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
alertDialog.show();
}
});
view.setTag(holder);
} else {
holder = (CartHolder) view.getTag();
}
CartItems cartItems = cartItemList.get(position);
holder.txtItemName.setText(cartItems.getItemName());
holder.txtItemPrice.setText(Util.priceTODollar(cartItems.getItemPrice()));
holder.txtQtyCount.setText("" + cartItems.getItemQty());
return view;
}
}
截圖從後
截圖列表視圖之前刪除項目從列表視圖中刪除項目
在第二個屏幕截圖中刪除了第二個項目,但白色背景顏色保持不變。
請幫我解決這個問題。
它已經在我的文章中可用。在AlertDialog.Builder中 –
它只有兩行cartItemList.remove(position); notifyDataSetChanged(); –
不確定這是否是您的問題,但是您的代碼'cartItemList.remove(position);'是錯誤的,因爲位置在ListView中發生變化,並且Views也被重用。你應該保存在持有人的位置。 – lionscribe