如何在android中的listView中禁用和启用特定的editText?

时间:2013-10-08 06:53:46

标签: android listview textchanged

我在listview中有一个editText。我使用了addTextChangedListener,在textChange后我有一个条件,当它为真我想要禁用listView中的所有EditText,除了 我使用TextChangeListener

的地方

到目前为止,我在myCustomAdapter中有这个:

     myHolder.txt_Qty.addTextChangedListener(new TextWatcher() {

            public void onTextChanged(CharSequence s, int start,
                    int before, int count) {


            }

            public void beforeTextChanged(CharSequence s, int start,
                    int count, int after) {

            }

            public void afterTextChanged(Editable s) {
                if(isError == true){
                    Log.i("afterchange errorPos", String.valueOf(errorPos));
                    S_4th_SelectItem.lst_listOrder.getChildAt(errorPos).setBackgroundColor(Color.rgb(255, 153, 204));
                    S_4th_SelectItem.btn_Update.setEnabled(false);

                    myHolder.txt_Qty.setEnabled(false);

                    ((Activity) context).getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
                }else {
                    S_4th_SelectItem.btn_Update.setEnabled(true);

                }

            }
        });

3 个答案:

答案 0 :(得分:1)

如果您想默认禁用所有EditText,请在 addTextChangedListener

之前添加以下内容
myHolder.txt_Qty.setEnabled(false);

答案 1 :(得分:0)

试试这个..

myHolder.txt_Qty.addTextChangedListener(new TextWatcher() {

            public void onTextChanged(CharSequence s, int start,
                    int before, int count) {

                if(isError){
                    Log.i("afterchange errorPos", String.valueOf(errorPos));
                    S_4th_SelectItem.lst_listOrder.getChildAt(errorPos).setBackgroundColor(Color.rgb(255, 153, 204));
                    S_4th_SelectItem.btn_Update.setEnabled(false);

                    myHolder.txt_Qty.setEnabled(false);

                    ((Activity) context).getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
                }else {
                    S_4th_SelectItem.btn_Update.setEnabled(true);

                }
            }

            public void beforeTextChanged(CharSequence s, int start,
                    int count, int after) {

            }

            public void afterTextChanged(Editable s) {


            }
        });

答案 2 :(得分:0)

Waqas的答案将起作用,另一个非常昂贵的解决方案是遍历所有其他列表项并禁用每个EditText在其中,不是太优雅但会完成工作。