Android 防止自定义ListView在滚动时刷新。我不想再提神了

Android 防止自定义ListView在滚动时刷新。我不想再提神了,android,android-edittext,page-refresh,custom-lists,onscroll,Android,Android Edittext,Page Refresh,Custom Lists,Onscroll,我在Android应用程序中使用自定义ListView。问题是当我滚动ListView时,它会自动从EditText(EditText作为列表项)中清除输入的数据,并刷新ListView。我想阻止它停止清除ListView滚动条上输入的数据。 请帮助我定义自定义列表适配器 2) 为每个项目定义一个对象,如class MyClass{String myText} 3) 存储该对象中每个项的EditText值 我有一个用于存储复选框状态的代码。为EditText使用并自定义它 protected i

我在Android应用程序中使用自定义ListView。问题是当我滚动ListView时,它会自动从EditText(EditText作为列表项)中清除输入的数据,并刷新ListView。我想阻止它停止清除ListView滚动条上输入的数据。 请帮助我定义自定义列表适配器

2) 为每个项目定义一个对象,如
class MyClass{String myText}

3) 存储该对象中每个项的EditText值

我有一个用于存储复选框状态的代码。为EditText使用并自定义它

protected interface MyTextWatcher extends TextWatcher {

    public void setEnabled(EditText editText, boolean enable);

    public void setText(EditText editText, String text);
}

private MyTextWatcher generalTextWatcher = new MyTextWatcher() {

        private boolean enabled_edtQty = true;
        private boolean enabled_edtPackingQty = true;

        public void setEnabled(EditText editText, boolean enable) {
            if (editText.equals(edtQty))
            {
                this.enabled_edtQty = enable;
            }
            else if (editText.equals(edtPackingQty))
            {
                this.enabled_edtPackingQty = enable;
            }
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            if (this.enabled_edtQty && edtQty != null
                    && edtQty.getText().hashCode() == s.hashCode())
            {
                edtQty_onTextChanged(s, start, before, count);
            }
            else if (this.enabled_edtPackingQty && edtPackingQty != null
                    && edtPackingQty.getText().hashCode() == s.hashCode())
            {
                edtPackingQty_onTextChanged(s, start, before, count);
            }
        }

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

        }

        @Override
        public void afterTextChanged(Editable s) {

        }

        @Override
        public void setText(EditText editText, String text) {

            this.setEnabled(editText, false);

            editText.setText(text);

            this.setEnabled(editText, true);
        }

    };


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

            View rowView;
            final MyClass item = getItem(position);

             edtQty.addTextChangedListener(generalTextWatcher);
             edtPackingQty.addTextChangedListener(generalTextWatcher);

             generalTextWatcher.setText(edtQty, item.myText1);
             generalTextWatcher.setText(edtPackingQty, item.myText2);


    }


    protected void edtQty_onTextChanged(CharSequence s, int start, int before,
            int count) {
                              item.myText1 = s;
            }

    protected void edtPackingQty_onTextChanged(CharSequence s, int start, int before,
            int count) {
                              item.myText2 = s;
            }

在您的情况下,您应该使用
addTextChangedListener
而不是
setOnCheckedChangeListener

breceivemail的答案是正确的

您还可以尝试使用ArrayList存储数据 ContextChangeListener可以在需要时存储数据 您可以在listview适配器的getView中恢复数据


注意:如果您正在搜索阻止listview在滚动时刷新,那么您的方向是错误的,因为我们无法阻止listview刷新其内容(因为所有屏幕外的内容都转储在listview中),适配器会在listview需要时存储/提供数据(您不能依靠系统来保护/存储数据,您应该手动存储/恢复数据)。

我在一个列表项中有两个EditText控件,因此当我获得更多记录时,如何在运行时维护值?Thanx寻求帮助。但我有点困惑。您能告诉我什么是“EntAcc002”吗?@Android_User这是一个类的示例。我更改了它。嗯……但我不明白我需要在那里放置哪个类?这只是我演示应用程序中的最后一个错误。请帮助我:(