2

내 안드로이드 애플 리케이션에서 사용자 지정 목록보기를 사용하고 있습니다. 문제는 내가 ListView를 스크롤 할 때 EditText (Edittext를 list_item으로)에서 입력 한 데이터를 자동으로 지우고 ListView를 새로 고칩니다. ListView Scroll에서 입력 된 데이터 지우기를 중지하고 싶지 않습니다. 제발 도와주세요 ..스크롤시 사용자 지정 ListView 새로 고침을 방지합니다. 나는 상쾌하게하고 싶지 않다

+0

코드를 표시하십시오 .. ??? – QuokMoon

답변

1

1)) 사용자 지정 목록 어댑터

2를 정의 class MyClass { String myText}

3과 같이 각 항목에 대한 객체를 정의)이 객체

에서 각 항목의 글고의 값을 저장

CheckBox의 상태를 저장하는 코드가 있습니다. EditText를 사용하고 사용자 정의하십시오. 당신이 addTextChangedListener 대신 setOnCheckedChangeListener

+0

하나의 목록 항목에 두 개의 EditText 컨트롤이 있으므로 더 많은 레코드가 생기면 어떻게 런타임을 유지 관리 할 수 ​​있습니까? – Ajay

+0

@Android_User 내 대답을 업데이트했습니다. – breceivemail

+0

고맙습니다. 도움말. 하지만 조금 혼란 스럽네. "EntAcc002"가 무엇인지 말해 주실 수 있습니까? – Ajay

0

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가 필요할 때 어댑터가 데이터를 저장/제공하도록 만든다. 수동으로 데이터를 저장/복원해야하는 데이터를 보호/저장하기 위해 시스템에 의존 할 수는 없습니다.