2012-03-19 3 views
0

를 업데이트 나던이 내 코드입니다 사용자에게 나타납니다 ......adapter.notifyDataSetChange() 내 어댑터

내 문제는이 방법을 사용하여 업데이트하지 않는다는 것입니다.

감사합니다.

+0

onResume 메소드가 의도 한대로 실제로 실행되면 로그에서 확인 했습니까? – dan

+0

코드 공유하기 ListaAdapter – Blackbelt

답변

1

활동을 재개 할 때마다 어댑터를 작성하지 마십시오. onCreate()에서 한 번 작성한 다음 notifyDataSetChanged() (onResume())으로 전화하십시오.

하지만 가장 큰 문제는 onResume()에 새 어댑터를 만들고 ListView에 연결하지 않는다는 것입니다. 당신이 그대로 코드를 유지해야하는 경우 당신은 당신이 이렇게 onCreate(...)에서 onResume()

+0

감사합니다! 나는 그것이이 방법으로 작동하고 있다는 것을 몰랐습니다 ........ 이제 당신이 의미하는대로 모든 코드를 변경하려고합니다 .... – zapotec

1

에 새 어댑터를 만든 후, 그 일에 ...

adaptador = new ListaAdapter(this, listaCompras); 
setListAdapter(adaptador); 

setListAdapter(adaptador)를 추가, 당신은에 대한 참조를 전달하는 ListView - 해당 참조는 new...을 호출하여 생성 된 ListAdapter입니다. 이 작업을 수행 onResume()에서

...

adaptador = new ListaAdapter(context, listaCompras); 
adaptador.notifyDataSetChanged(); 

... 편지 adaptador 새로운 ListAdapter하지만 ListView 자체는 여전히 onCreate(...)에서 인스턴스화 첫 ListAdapter에 대한 참조를 유지하고에 새로운 기준을 가지고 .

가장 쉬운 방법은 onCreate(...)에서 코드를 완전히 제거하고 onResume()ListAdapter을 만들고 setListAdapter(...)을 호출하도록 처리하는 것입니다.

+0

응용 프로그램이 다시 시작될 때마다 nwe 어댑터를 생성하는 것은 꽤 어렵습니다. 낭비. 한번만 만들어야합니다. – Mimminito

+0

@Mimminito : OK - 나는 잘못했다고 말했습니다. 나는 항상 어댑터가'null'인지 아닌지를 확인하기 위해'onResume()'에 체크를하고 필요하다면 어댑터를 사용하도록 ListView를 만들고 설정한다. 필자의 지적은 데이터가 자주 바뀔 수 있기 때문에 onCreate (...)가 아니라 onResume()에서 이런 종류의 일을하는 것이 가장 좋다는 것입니다. – Squonk

+0

물론 확인하는 것은 좋은 습관입니다. 나는 사람들이 응용 프로그램이 재개 될 때마다 새로운 자원을 생성하는 느낌을 얻지 못하게하는 것이 명확하게 해 주셔서 감사합니다. – Mimminito