내 안드로이드 애플 리케이션에서 사용자 지정 목록보기를 사용하고 있습니다. 문제는 내가 ListView를 스크롤 할 때 EditText (Edittext를 list_item으로)에서 입력 한 데이터를 자동으로 지우고 ListView를 새로 고칩니다. ListView Scroll에서 입력 된 데이터 지우기를 중지하고 싶지 않습니다. 제발 도와주세요 ..스크롤시 사용자 지정 ListView 새로 고침을 방지합니다. 나는 상쾌하게하고 싶지 않다
답변
1)) 사용자 지정 목록 어댑터
2를 정의 class MyClass { String myText}
3과 같이 각 항목에 대한 객체를 정의)이 객체
에서 각 항목의 글고의 값을 저장CheckBox의 상태를 저장하는 코드가 있습니다. EditText를 사용하고 사용자 정의하십시오. 당신이 addTextChangedListener
대신 setOnCheckedChangeListener
하나의 목록 항목에 두 개의 EditText 컨트롤이 있으므로 더 많은 레코드가 생기면 어떻게 런타임을 유지 관리 할 수 있습니까? – Ajay
@Android_User 내 대답을 업데이트했습니다. – breceivemail
고맙습니다. 도움말. 하지만 조금 혼란 스럽네. "EntAcc002"가 무엇인지 말해 주실 수 있습니까? – Ajay
breceivemail에 의해 답이 정확한지의 사용해야 상황에
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;
}
,
당신은 또한 을 필요로 할 때 onTextChangeListener 데이터를 저장할 수있는 데이터를 저장하기 위해 ArrayList를 사용해보십시오 수 있으며, 목록 뷰 어댑터의 getView에서 데이터를 복원 할 수 있습니다.
참고 : l istview는 화면을 새로 고침 할 때 Listview가 내용을 새로 고치는 것을 막을 수 없으므로 잘못된 방향으로 가고있다. (모든 화면 내용이 listviews에 덤프되기 때문에) listview가 필요할 때 어댑터가 데이터를 저장/제공하도록 만든다. 수동으로 데이터를 저장/복원해야하는 데이터를 보호/저장하기 위해 시스템에 의존 할 수는 없습니다.
코드를 표시하십시오 .. ??? – QuokMoon