gpt4 book ai didi

android - 防止自定义 ListView 在滚动时刷新。我想停止刷新

转载 作者:行者123 更新时间:2023-11-29 01:57:54 24 4
gpt4 key购买 nike

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

最佳答案

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

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

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

我有一个用于存储 CheckBox 状态的代码。为 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

关于android - 防止自定义 ListView 在滚动时刷新。我想停止刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14169921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com