我有一个产品清单。我可以为每个项目设置订单数量。为此,我使用了对话框和项目位置。 但是,当我为单个项目放置数量时,会影响多个项目。
Problem Video 我用过波纹管代码
sListview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
final Dialog dialog = new Dialog(OrderEntryActivity.this);
dialog.setContentView(R.layout.order_qty_collect);
TextView tvpid= (TextView) view.findViewById(R.id.pId);
TextView tVpid= (TextView) dialog.findViewById(R.id.pcode);
PRODUCTID=tvpid.getText().toString();
tVpid.setText(PRODUCTID);
final TextView parentitemid= (TextView) dialog.findViewById(R.id.parentitemid);
parentitemid.setText( String.valueOf(position));
TextView tvpname= (TextView) view.findViewById(R.id.pName);
TextView tVpname= (TextView) dialog.findViewById(R.id.pName);
tVpname.setText(tvpname.getText());
TextView tvpprice= (TextView) view.findViewById(R.id.pPrice);
TextView tVpprice= (TextView) dialog.findViewById(R.id.pPrice);
TextView pQty= (TextView) dialog.findViewById(R.id.poQty);
tVpprice.setText(tvpprice.getText());
dialog.setCancelable(false);
dialog.show();
Button submit = (Button) dialog.findViewById(R.id.btn_qtySubmit);
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TextView PIid= (TextView) dialog.findViewById(R.id.parentitemid);
int ItemPogision =Integer.parseInt(PIid.getText().toString());
EditText qTy= (EditText) dialog.findViewById(R.id.qtyId);
String qtY=qTy.getText().toString();
if(qtY.equals("")){
Toast.makeText(OrderEntryActivity.this,"Order Quantity Blank. Please fillup.",Toast.LENGTH_SHORT).show();
}else{
Integer Qty= Integer.parseInt(qtY);
salesDB.deleteTmpOrderByPID(PRODUCTID);
Boolean x=salesDB.TmpOrderInsert(CUSTID,PRODUCTID,Qty);
if(x==true){
TextView pqty= (TextView) sListview.getChildAt(ItemPogision).findViewById(R.id.poQty);
pqty.setText(qtY);
sListview.getChildAt(ItemPogision).setBackgroundColor(Color.GREEN);
Toast.makeText(OrderEntryActivity.this,"Added to Cart",Toast.LENGTH_SHORT).show();
dialog.dismiss();
Count++;
count.setText(Count.toString());
}else{
Toast.makeText(OrderEntryActivity.this,"Fail to add into Cart",Toast.LENGTH_SHORT).show();
}
}
}
});
Button close = (Button) dialog.findViewById(R.id.btn_cancel);
close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.cancel();
}
});
}
});
在视频中您可以看到,我已经下了两个产品的订单数量,但是它影响了项目列表中的多个产品。
答案 0 :(得分:0)
我完全听不懂你在说什么 但, 如果要设置ClickListener或在ListView的特定行或该行中的特定项目中执行任何操作,则应在ListAdapter中设置侦听器,这样就可以正常工作。
答案 1 :(得分:0)
我会使用getItemAtPosition()
sListview.setClickable(true);
sListview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Object o = lv.getItemAtPosition(position);
/* write you handling code*/
}
});
您的代码可能会使用其他控件,因为它们都具有相同的ID,我没有过多研究您的代码,但看来这是您的问题。