prevent自定义的ListView刷新上滚动。我想停止刷新 [英] prevent Custom ListView Refreshing on scroll. I want to stop refreshing

查看:124
本文介绍了prevent自定义的ListView刷新上滚动。我想停止刷新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的Andr​​oid应用程序使用自定义的ListView。现在的问题是,当我的ListView滚动,它会自动清除从EditText上输入的数据(EDITTEXT作为LIST_ITEM),它的ListView刷新。我想prevent它停止的ListView滚动清除输入的数据。
请帮我..

I am using Custom ListView in My Android App. The Problem is when i am scrolling ListView, it automatically clears entered data from EditText( Edittext as a list_item ) and it ListView refreshed. I Want to Prevent it to stop clearing entered data on ListView Scroll. Please Help me..

推荐答案

1)定义自定义列表适配器

1) define custom list adapter

2)定义的对象像每个项目 MyClass类{会将myText字符串}

2) define a an object for each item like class MyClass { String myText}

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

3) store the value of the EditText of each item in that object

我有一个code存储复选框的状态。使用和定制它的EditText。

I have a code for storing the state of CheckBox. use and customize it for 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

in your situation you should use addTextChangedListener instead of setOnCheckedChangeListener

这篇关于prevent自定义的ListView刷新上滚动。我想停止刷新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆