如何使用数组适配器中的按钮删除列表视图中的项目
how to remove item in listview using button inside the arrayadapter
我正在尝试使用 ArrayAdapter
中的按钮删除显示在 ListView
中的项目。我在ArrayAdapter
中看到getPosition
方法是returns项的索引号,但我不知道在ArrayAdapter
的remove方法中使用它。我怎样才能做到这一点?需要帮助。
数组适配器
public class myOrderAdapter extends ArrayAdapter<myOrder> {
ArrayList<myOrder> list;
public class ViewHolder{
TextView tableNum;
TextView itemName;
TextView itemQuantity;
TextView custName;
Button btnStatus;
}
public myOrderAdapter(Context context, ArrayList<myOrder> orderList) {
super(context, 0,orderList);
this.list = orderList;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final myOrder orderList = getItem(position);
ViewHolder viewHolder;
viewHolder = new ViewHolder();
if(convertView == null){
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_layout,parent,false);
viewHolder.tableNum = (TextView)convertView.findViewById(R.id.tableNum);
viewHolder.itemName = (TextView)convertView.findViewById(R.id.itemName);
viewHolder.custName = (TextView)convertView.findViewById(R.id.custName);
viewHolder.itemQuantity = (TextView)convertView.findViewById(R.id.itemQuantity);
viewHolder.btnStatus = (Button)convertView.findViewById(R.id.statusButton);
convertView.setTag(viewHolder);
}
else {
viewHolder = (ViewHolder)convertView.getTag();
}
viewHolder.tableNum.setText("Order for Table: "+orderList.getTable_id());
viewHolder.itemName.setText(orderList.getItem_name());
viewHolder.custName.setText("Customer Name: " + orderList.getCust_name());
viewHolder.itemQuantity.setText("QTY: " + orderList.getQuantity());
if(orderList.getStatus_id() == 1){
viewHolder.btnStatus.setText("Ready");
viewHolder.btnStatus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getContext(),"" + getPosition(orderList),Toast.LENGTH_SHORT).show();
// Remove item codes here..
list.remove(position);
}
});
notifyDataSetChanged();
}
return convertView;
}
viewHolder.btnStatus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(),"" + getPosition(orderList),Toast.LENGTH_SHORT).show();
list.remove(position); //List/ArrayList of order in your program.
}
});
notifyDataSetChanged();
ArrayAdapter 还有一个方法 remove(T Object) 可以从列表中删除项目,或者您可以从 ArrayList 中删除它。
首先在 getView
中获取订单
final myOrder order = getItem(position);
orderList 是您在构造函数中传递的 ArrayList。
viewHolder.btnStatus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Your Toast message
orderList.remove(position);
}
});
notifyDataSetChanged();
我正在尝试使用 ArrayAdapter
中的按钮删除显示在 ListView
中的项目。我在ArrayAdapter
中看到getPosition
方法是returns项的索引号,但我不知道在ArrayAdapter
的remove方法中使用它。我怎样才能做到这一点?需要帮助。
数组适配器
public class myOrderAdapter extends ArrayAdapter<myOrder> {
ArrayList<myOrder> list;
public class ViewHolder{
TextView tableNum;
TextView itemName;
TextView itemQuantity;
TextView custName;
Button btnStatus;
}
public myOrderAdapter(Context context, ArrayList<myOrder> orderList) {
super(context, 0,orderList);
this.list = orderList;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final myOrder orderList = getItem(position);
ViewHolder viewHolder;
viewHolder = new ViewHolder();
if(convertView == null){
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_layout,parent,false);
viewHolder.tableNum = (TextView)convertView.findViewById(R.id.tableNum);
viewHolder.itemName = (TextView)convertView.findViewById(R.id.itemName);
viewHolder.custName = (TextView)convertView.findViewById(R.id.custName);
viewHolder.itemQuantity = (TextView)convertView.findViewById(R.id.itemQuantity);
viewHolder.btnStatus = (Button)convertView.findViewById(R.id.statusButton);
convertView.setTag(viewHolder);
}
else {
viewHolder = (ViewHolder)convertView.getTag();
}
viewHolder.tableNum.setText("Order for Table: "+orderList.getTable_id());
viewHolder.itemName.setText(orderList.getItem_name());
viewHolder.custName.setText("Customer Name: " + orderList.getCust_name());
viewHolder.itemQuantity.setText("QTY: " + orderList.getQuantity());
if(orderList.getStatus_id() == 1){
viewHolder.btnStatus.setText("Ready");
viewHolder.btnStatus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getContext(),"" + getPosition(orderList),Toast.LENGTH_SHORT).show();
// Remove item codes here..
list.remove(position);
}
});
notifyDataSetChanged();
}
return convertView;
}
viewHolder.btnStatus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(),"" + getPosition(orderList),Toast.LENGTH_SHORT).show();
list.remove(position); //List/ArrayList of order in your program.
}
});
notifyDataSetChanged();
ArrayAdapter 还有一个方法 remove(T Object) 可以从列表中删除项目,或者您可以从 ArrayList 中删除它。 首先在 getView
中获取订单final myOrder order = getItem(position);
orderList 是您在构造函数中传递的 ArrayList。
viewHolder.btnStatus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Your Toast message
orderList.remove(position);
}
});
notifyDataSetChanged();