我在检查更改时我的复选框出现问题,如果选中复选框,则显示一个警告对话框,该对话框获取输入值并将值设置为文本视图,并且我将此值添加到列表中我的代码
@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。 .. 但我希望来自警报对话框的数量值应添加到列表.... 任何人都可以帮助我......
答案 0 :(得分: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 intialization语句放在onClick方法中,因为它没有在其他任何地方使用。如果他们选择“取消”,请保存一行代码:)