我有一个包含项目的列表视图。我已经使用自定义对话框开发了onitemclick()函数来输入值。我需要使用我们在对话框中输入的值更新listview当前项。 我这样做了
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
showCustomDialog(view);
if(quantity>0){
TextView tv=(TextView)view.findViewById(R.id.row_item_quantity);
tv.setTextColor(R.color.white);
tv.setText(quantity+"");
quantity=0;
Toast.makeText(getActivity(), "entered "+quantity , Toast.LENGTH_SHORT).show();
}
}
showCustomDialog函数是
protected void showCustomDialog(View view) {
// TODO Auto-generated method stub
final Dialog dialog;
dialog = new Dialog(getActivity());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.alert_enter_quantity);
dialog.setCancelable(true);
final EditText editText;
editText = (EditText)dialog.findViewById(R.id.quantity_number);
Button buttonCancel;
buttonCancel = (Button)dialog.findViewById(R.id.quantity_cancel_button);
buttonCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
Button buttonOK;
buttonOK = (Button)dialog.findViewById(R.id.quantity_ok_button);
buttonOK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Toast.makeText(getActivity(), "entered"+editText.getText().toString() , Toast.LENGTH_SHORT).show();
String text=editText.getText().toString();
if(text=="")
text=""+0;
quantity =Integer.parseInt(text);
//setQuantity(qty);
dialog.dismiss();
}
});
dialog.show();
}
它获取值并将在我点击的下一个项目上更新。我该如何纠正这个问题。
答案 0 :(得分:2)
使用
tv.setText(将String.valueOf(数量);
而不是
tv.setText(数量+&#34;&#34);
答案 1 :(得分:0)
如果你使用数组列表数据,你必须更新列表的确切位置。然后调用adapter.notifiDataChanged()。如果你想暂时改变它使用view.invalidate();
答案 2 :(得分:0)
我做到了。
如下所示。
使用edittext和两个按钮编写一个自定义对话框,然后单击“确定”和“取消”。
buttonOK = (Button)dialog.findViewById(R.id.quantity_ok_button);
buttonOK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String text;
text=editText.getText().toString();
quantity=text;
//Toast.makeText(getActivity(), "entered"+editText.getText().toString() , Toast.LENGTH_SHORT).show();
setQuantity(quantity,position);
dialog.dismiss();
}
});
void setQuantity(String quantity,int position){
if(!selectedItemsMenu.contains(data))
// lines ///
selectedItemsMenu.add(data);
listMenu.add(position, data);
Log.e("new list size", selectedItemsMenu.size() + "");
adapter.notifyDataSetChanged();