简体   繁体   English

如何使用arrayadapter中的按钮在列表视图中删除项目

[英]how to remove item in listview using button inside the arrayadapter

Im trying to remove an item displayed in my ListView using a button inside my ArrayAdapter . 我试图使用ArrayAdapter内的按钮删除ListView显示的项目。 I saw getPosition method in the ArrayAdapter that returns the index number of the item, but I dont know to use it in the remove method of the ArrayAdapter . 我在ArrayAdapter中看到了getPosition方法,该方法返回了该项目的索引号,但是我不知道在ArrayAdapter的remove方法中使用它。 How can I do this? 我怎样才能做到这一点? need help please. 请需要帮助。

arrayAdapter arrayAdapter

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 also has a method remove(T Object) which can remove the item from the list or you can remove it from the ArrayList. ArrayAdapter还具有方法remove(T Object),可以从列表中删除该项目,也可以从ArrayList中将其删除。 First of all get order in getView 首先在getView中获得订单

final myOrder order = getItem(position);

orderList is the ArrayList that you passed in Constructor. orderList是您在构造函数中传递的ArrayList。

viewHolder.btnStatus.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        //Your Toast message

        orderList.remove(position);
    }
});

notifyDataSetChanged();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM