prevent自定义的ListView刷新上滚动。我想停止刷新 [英] prevent Custom ListView Refreshing on scroll. I want to stop refreshing
问题描述
我在我的Android应用程序使用自定义的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屋!