0

嗨,当检查更改时,我的复选框出现问题,如果复选框被选中,我将显示一个警报对话框,该对话框接受输入值并将值设置为文本视图,并且我将该值添加到列表中,这是我的代码

    @Override
    public void onCheckedChanged(CompoundButton checkBox, boolean isChecked)
    {
        TextView tvItem=(TextView)selectedView.findViewById(R.id.foodName); 
        final TextView tvQuantity=(TextView)selectedView.findViewById(R.id.quantity);

        orderList=new ArrayList<Order>();
        Order order=new Order();
        if(isChecked)
        {   

            final AlertDialog.Builder quantityAlert= new AlertDialog.Builder(TakeOrder.this);
            quantityAlert.setTitle("Quantity");
            quantityAlert.setMessage("Please enter quantity");

            final EditText input = new EditText(TakeOrder.this);
            input.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
            quantityAlert.setView(input);

            quantityAlert.setPositiveButton("Ok", new DialogInterface.OnClickListener()
            {   
                public void onClick(DialogInterface dialog, int whichButton)
                {
                  value = input.getText();

                  tvQuantity.setText(value);

                }               
            });

            quantityAlert.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
            {
                  public void onClick(DialogInterface dialog, int whichButton)
                  {

                  }
                });

            quantityAlert.show();

            order.setItem(tvItem.getText().toString());
            order.setQuantity(Integer.valueOf(tvQuantity.getText().toString()));

            orderList.add(selectedPosition, order);
            Log.v("Item:",orderList.get(selectedPosition).getItem());
            Log.v("Quantity:",String.valueOf(orderList.get(selectedPosition).getQuantity()));
        }
        else
        {
            tvQuantity.setText("0");
            orderList.remove(selectedPosition);

        }




    }

问题是我首先显示警报对话框然后从用户那里获取数量值但是在我在警报框中输入值之前 Log.v 执行并显示 0 这意味着在我的列表中数量被添加到 0...但是我希望将来自警报对话框的数量值添加到列表中......任何人都可以帮助我......

4

1 回答 1

0

这是有道理的,因为代码不会停止并等待您的警报对话框完成。它构建它,显示它,然后继续前进,这是您创建价值并将其添加到列表中的地方。

如果您希望它仅在您按“确定”时添加,则需要将订单修改和插入代码放入“确定”(肯定按钮)处理程序中。

public void onClick(DialogInterface dialog, int whichButton)
{               
    Order order=new Order();         
    value = input.getText();                      
    tvQuantity.setText(value);                       

    order.setItem(tvItem.getText().toString());             
    order.setQuantity(Integer.valueOf(value);

    orderList.add(selectedPosition, order);    

    Log.v("Item:",orderList.get(selectedPosition).getItem());             
    Log.v("Quantity:",String.valueOf(orderList.get(selectedPosition).getQuantity()));         
} 

我还将 Order 初始化语句放在 onClick 方法中,因为它没有在其他任何地方使用。如果他们选择“取消”,请为自己节省一行代码 :)

于 2012-05-15T13:27:36.673 回答