귀하의 의견에 따르면 어댑터의 배열은 업데이트하지 않지만 어댑터에 한 번 전달한 활동은 배열을 유지합니다. 그건 왜 어댑터가 제대로 업데이 트되지 않습니다. 어댑터 클래스와 다른 배열을 변경하고 있습니다.이 배열은 어댑터가 사용하는 것과 동일한 배열 객체가 아닐 수도 있습니다. onResume()에서 어댑터가 새 배열로 다시 만들어지고 새 내용이 표시됩니다. 새 배열에
활동에서 그런
class MyAdapter extends BaseAdapter {
private Array[] myArray;
public MyAdapter(Array[] myArray) {
this.myArray = myArray;
}
public updateContent(Array[] myNewArray) {
this.myArray = myNewArray;
this.notifyDataSetChanged();
}
// your getItem, getView, and so on methods
}
, 간단한 전화 myArray.updateContent을() 그리고 immediatly 업데이트됩니다
해결책은 다음과 같은 사용자 정의 어댑터 클래스를 사용하는 것입니다.
하나의 클래스 (어댑터)에서 사용 된 객체를 다른 하나 (활동) 내에서 유지하고 조작하는 것이 결코 바람직하지 않습니다. 배열을 조작하는 모든 코드를 어댑터로 옮기고 메소드를 사용하여 항목을 추가/제거하십시오. 이렇게하면 이런 종류의 오류를 쉽게 찾을 수 있습니다!
몇 가지 코드를 게시 할 수 있습니까? – kvh
어댑터를 채우는 데이터의 출처는 어디입니까? 어댑터 자체에 반드시 내용을 어댑터에 추가 한 후에는 notifyDataSetChanged를 호출해야합니다. – Rarw
코드를 게시하지 않아 죄송합니다. 비공개 계약을 맺고 있습니다. Rarw, 처음에는 어댑터에 데이터를 제공하는 고정 길이의 배열을 가지고 있습니다. 그런 다음 어댑터를 목록에 추가합니다. 그런 다음 사용자가 배열에 요소를 추가 할 수 있습니다. 내가 원하는 것은 사용자가 버튼을 클릭하자마자 ListView가 업데이트되도록하는 것입니다. –