我一直在試圖弄清楚大約2周,但沒有運氣。我試圖通過使用AlertDialog
在我的onClickListener
中添加一條確認消息,並且AlertDialog的setPositiveButton
將成爲我想要發生的事情的一個,但它會混淆getView
中的int position
值。不是獲取我點擊的項目的位置,而是獲取最後一項的位置。我試圖做Toast
消息onClick
內(不的AlertDialog
中),它返回正確的位置,但是當我嘗試Toast
消息AlertDialog
內它改變了位置值。我卡住了,不知道如何使這項工作。在Button.onClick中使用AlertDialog在ArrayAdapter中弄亂了getView(int的位置)的值
這裏是我的Adapter.Class
public class myOrderAdapter extends ArrayAdapter<myOrder> {
AlertDialog.Builder builder;
AlertDialog ad;
public class ViewHolder{
TextView tableNum;
TextView itemName;
TextView itemQuantity;
TextView custName;
Button btnStatus;
}
public myOrderAdapter(Context context, ArrayList<myOrder> orderList) {
super(context, 0,orderList);
}
@Override
public View getView(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());
builder = new AlertDialog.Builder(Order.context);
builder.setTitle("Confirmation");
builder.setIcon(R.drawable.ic_confirm);
builder.setMessage("Is this Ready to Serve?");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(getContext(),orderList.getOrder_id()+ "+" + orderList.getItem_name() + "+" + position,Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
ad = builder.create();
viewHolder.btnStatus.setText("Ready");
viewHolder.btnStatus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getContext(),orderList.getOrder_id()+ "+" + orderList.getItem_name() + "+" + position,Toast.LENGTH_SHORT).show();
ad.show();
}
});
return convertView;
}
}
注: 我在builder.setPositiveButton
設置Toast
消息一樣Button.onClickListener
來檢查值的變化,是它確實發生了改變。需要一些幫助和指導,謝謝。
不要忘了標記答案爲接受,如果它可以幫助你 –