如何在列表视图 android 中删除特定列表项?
How to remove a particular list item in list view android?
在我的应用程序中,我将自定义适配器用于列表视图。在该列表视图项中
它有密切的形象。每当我单击需要删除特定行的图像时。我的问题是如果我对第一项执行删除操作但只对最后一项执行删除操作。请任何人帮助我。
我的代码:
public class PaymentAdapter extends BaseAdapter {
ArrayList<PaymentData> bpData;
private ArrayList<PaymentData> arraylist;
Activity activity;
private LayoutInflater inflater;
String orderitemid, orderid;
ListView recharge_lv;
public PaymentAdapter(Activity activity, ArrayList<PaymentData> bpData, ListView recharge_lv) {
// TODO Auto-generated constructor stub
this.activity = activity;
this.bpData = bpData;
this.recharge_lv = recharge_lv;
inflater = LayoutInflater.from(activity);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return bpData.size();
}
@Override
public Object getItem(int location) {
// TODO Auto-generated method stub
return bpData.size();
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Typeface custom_regular = Typeface.createFromAsset(activity.getAssets(),
"fonts/OpenSans-Regular.ttf");
if (inflater == null)
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null)
convertView = inflater.inflate(R.layout.recharge_listitem, null);
TextView accountnumber = (TextView) convertView
.findViewById(R.id.accountnumber);
TextView servicename = (TextView) convertView
.findViewById(R.id.servicetypname);
TextView planamount = (TextView) convertView
.findViewById(R.id.rechargeamount);
final ImageView close = (ImageView) convertView
.findViewById(R.id.crosse_close_img);
accountnumber.setTypeface(custom_regular);
servicename.setTypeface(custom_regular);
planamount.setTypeface(custom_regular);
orderitemid = bpData.get(position).getOrderitemID();
// Log.v("TAG_orderitemid",""+orderitemid);
orderid = bpData.get(position).getOrderid();
final LinearLayout layoutrecharge = (LinearLayout) convertView.findViewById(R.id.rechargelay);
close.setTag(position);
close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new GetdeleteOrderItem().execute(WebUrl.RechargeServiceURL + "deleteOrderItem");
int deletePos = Integer.parseInt(v.getTag().toString());
bpData.remove(position);
Helper.getListViewSize(recharge_lv);//run it
notifyDataSetChanged();
reloadcas_cb.setChecked(false);
}
});
accountnumber.setText(bpData.get(position).getAccountNumber());
servicename.setText(bpData.get(position).getServicename());
planamount.setText("Rs." + bpData.get(position).getRechargeamount());
totalamount.setText("Rs " + bpData.get(position).getAmount());
return convertView;
}
试试下面的代码片段:
delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// your position of item to remove
Integer index = (Integer) v.getTag();
// your arrtlist ot arry to remove item
mProducts.remove(index.intValue());
notifyDataSetChanged();
}
});
My problem is if i perform delete operation on first item but the
delete operation performed on last item only
因为您要在 remove
方法中传递 position
(保存最后一次调用 getView 方法时分配的值)传递 deletePos
使用 [=14 保存视图=] 方法:
int deletePos = Integer.parseInt(v.getTag().toString());
bpData.remove(deletePos);
替换此代码:
new GetdeleteOrderItem().execute(WebUrl.RechargeServiceURL + "deleteOrderItem");
int deletePos = Integer.parseInt(v.getTag().toString());
bpData.remove(position);
Helper.getListViewSize(recharge_lv);//run it
notifyDataSetChanged();
reloadcas_cb.setChecked(false);
到
new GetdeleteOrderItem().execute(WebUrl.RechargeServiceURL + "deleteOrderItem");
int deletePos = Integer.parseInt(v.getTag().toString());
bpData.remove(deletePos);
Helper.getListViewSize(recharge_lv);//run it
notifyDataSetChanged();
reloadcas_cb.setChecked(false);
试试这个
bpData.remove(bpData.get(position));
而不是
bpData.remove(position);
在我的应用程序中,我将自定义适配器用于列表视图。在该列表视图项中 它有密切的形象。每当我单击需要删除特定行的图像时。我的问题是如果我对第一项执行删除操作但只对最后一项执行删除操作。请任何人帮助我。
我的代码:
public class PaymentAdapter extends BaseAdapter {
ArrayList<PaymentData> bpData;
private ArrayList<PaymentData> arraylist;
Activity activity;
private LayoutInflater inflater;
String orderitemid, orderid;
ListView recharge_lv;
public PaymentAdapter(Activity activity, ArrayList<PaymentData> bpData, ListView recharge_lv) {
// TODO Auto-generated constructor stub
this.activity = activity;
this.bpData = bpData;
this.recharge_lv = recharge_lv;
inflater = LayoutInflater.from(activity);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return bpData.size();
}
@Override
public Object getItem(int location) {
// TODO Auto-generated method stub
return bpData.size();
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Typeface custom_regular = Typeface.createFromAsset(activity.getAssets(),
"fonts/OpenSans-Regular.ttf");
if (inflater == null)
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null)
convertView = inflater.inflate(R.layout.recharge_listitem, null);
TextView accountnumber = (TextView) convertView
.findViewById(R.id.accountnumber);
TextView servicename = (TextView) convertView
.findViewById(R.id.servicetypname);
TextView planamount = (TextView) convertView
.findViewById(R.id.rechargeamount);
final ImageView close = (ImageView) convertView
.findViewById(R.id.crosse_close_img);
accountnumber.setTypeface(custom_regular);
servicename.setTypeface(custom_regular);
planamount.setTypeface(custom_regular);
orderitemid = bpData.get(position).getOrderitemID();
// Log.v("TAG_orderitemid",""+orderitemid);
orderid = bpData.get(position).getOrderid();
final LinearLayout layoutrecharge = (LinearLayout) convertView.findViewById(R.id.rechargelay);
close.setTag(position);
close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new GetdeleteOrderItem().execute(WebUrl.RechargeServiceURL + "deleteOrderItem");
int deletePos = Integer.parseInt(v.getTag().toString());
bpData.remove(position);
Helper.getListViewSize(recharge_lv);//run it
notifyDataSetChanged();
reloadcas_cb.setChecked(false);
}
});
accountnumber.setText(bpData.get(position).getAccountNumber());
servicename.setText(bpData.get(position).getServicename());
planamount.setText("Rs." + bpData.get(position).getRechargeamount());
totalamount.setText("Rs " + bpData.get(position).getAmount());
return convertView;
}
试试下面的代码片段:
delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// your position of item to remove
Integer index = (Integer) v.getTag();
// your arrtlist ot arry to remove item
mProducts.remove(index.intValue());
notifyDataSetChanged();
}
});
My problem is if i perform delete operation on first item but the delete operation performed on last item only
因为您要在 remove
方法中传递 position
(保存最后一次调用 getView 方法时分配的值)传递 deletePos
使用 [=14 保存视图=] 方法:
int deletePos = Integer.parseInt(v.getTag().toString());
bpData.remove(deletePos);
替换此代码:
new GetdeleteOrderItem().execute(WebUrl.RechargeServiceURL + "deleteOrderItem");
int deletePos = Integer.parseInt(v.getTag().toString());
bpData.remove(position);
Helper.getListViewSize(recharge_lv);//run it
notifyDataSetChanged();
reloadcas_cb.setChecked(false);
到
new GetdeleteOrderItem().execute(WebUrl.RechargeServiceURL + "deleteOrderItem");
int deletePos = Integer.parseInt(v.getTag().toString());
bpData.remove(deletePos);
Helper.getListViewSize(recharge_lv);//run it
notifyDataSetChanged();
reloadcas_cb.setChecked(false);
试试这个
bpData.remove(bpData.get(position));
而不是
bpData.remove(position);