Prevent Custom Listview Refreshing On Scroll. I Want To Stop Refreshing
Solution 1:
1) define custom list adapter
2) define a an object for each item like class MyClass { String myText}
3) store the value of the EditText of each item in that object
I have a code for storing the state of CheckBox. use and customize it for EditText.
protectedinterfaceMyTextWatcherextendsTextWatcher {
publicvoidsetEnabled(EditText editText, boolean enable);
publicvoidsetText(EditText editText, String text);
}
privateMyTextWatchergeneralTextWatcher=newMyTextWatcher() {
privatebooleanenabled_edtQty=true;
privatebooleanenabled_edtPackingQty=true;
publicvoidsetEnabled(EditText editText, boolean enable) {
if (editText.equals(edtQty))
{
this.enabled_edtQty = enable;
}
elseif (editText.equals(edtPackingQty))
{
this.enabled_edtPackingQty = enable;
}
}
@OverridepublicvoidonTextChanged(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);
}
elseif (this.enabled_edtPackingQty && edtPackingQty != null
&& edtPackingQty.getText().hashCode() == s.hashCode())
{
edtPackingQty_onTextChanged(s, start, before, count);
}
}
@OverridepublicvoidbeforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@OverridepublicvoidafterTextChanged(Editable s) {
}
@OverridepublicvoidsetText(EditText editText, String text) {
this.setEnabled(editText, false);
editText.setText(text);
this.setEnabled(editText, true);
}
};
@Overridepublic View getView(int position, View convertView, ViewGroup parent) {
View rowView;
finalMyClassitem= getItem(position);
edtQty.addTextChangedListener(generalTextWatcher);
edtPackingQty.addTextChangedListener(generalTextWatcher);
generalTextWatcher.setText(edtQty, item.myText1);
generalTextWatcher.setText(edtPackingQty, item.myText2);
}
protectedvoidedtQty_onTextChanged(CharSequence s, int start, int before,
int count) {
item.myText1 = s;
}
protectedvoidedtPackingQty_onTextChanged(CharSequence s, int start, int before,
int count) {
item.myText2 = s;
}
in your situation you should use addTextChangedListener
instead of setOnCheckedChangeListener
Solution 2:
the answer by breceivemail is correct,
you can also try using ArrayList for storing data onTextChangeListener can store data when needed and you can restore data in getView of your listview's adapter
Note: if you are searching for stopping the listview from refreshing on scrolling, then you are going in wrong direction, because we can't stop listview from refreshing its contents(because all off screen contents are dumped in listviews), adapters are made to store/provide data when needed by listview(you can't rely on system to protect/store data you should store/restore data manually).
Post a Comment for "Prevent Custom Listview Refreshing On Scroll. I Want To Stop Refreshing"