单击listview项时更新TextView中的值

时间:2014-03-21 05:44:08

标签: android listview android-listview

我有一个包含项目的列表视图。我已经使用自定义对话框开发了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();
    }

它获取值并将在我点击的下一个项目上更新。我该如何纠正这个问题。

3 个答案:

答案 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();