2010-11-27 3 views
2

이 질문은 BaseAdapter에서 notifyDataSetChanged() 메서드를 사용하는 것이 좋습니다 몇 번 대답했습니다.기본 데이터가 변경 될 때 뷰 표시 새로 고침

응용 프로그램에서 어댑터를 사용하지 않을 때 새로 고치는 방법이 있습니까? 나는 기본 설정과 함께 몇 가지 활동을 사용하는 간단한 응용 프로그램과 텍스트보기 및 단추가있는 상대적 레이아웃을 가지고 있습니다. 지금은 SimpleAdapter 또는 ArrayAdapter 또는 CursorAdapter와 같은 어댑터를 사용하지 않습니다. 내 경우에는 notifyDataSetChanged()를 사용하기 위해 그 중 하나를 만들어야 만하는 것처럼 보입니까? 나에게 더 쉬운 방법은없는거야?

답변

2

SimpleAdapter, ArrayAdapter 또는 CursorAdapter과 같은 (내가 잘못 생각할 수도 있지만 실제로는 모양이 비슷합니다.) 것 같습니다. 그들은 ListView 안에 Activity (또는 더 나은 것의 내부 - ListActivity의 안쪽에) 일할 것으로 예상된다. ListView을 사용하지 않으면 해당 음역 기는 당신에게 쓸모가 없습니다.

어떤 방식 으로든 데이터를 보존한다고 가정합니다 (SharedPreferences 또는 파일). 따라서 활동을 시작하면보기를 채우기 위해 데이터를 읽습니다. 이 경우 여분의 것이 필요하지 않습니다. 현재 표시된 활동에 대한 데이터를 다시로드해야하는 경우 영구 저장소에서 데이터를 다시 읽은 다음보기를 다시 채 웁니다.

+0

나는 SharedPreferences를 사용합니다. 화면을 표시하는 활동이 있습니다. 알람을 설정하고, 알람이 울리며, 서비스가 시작되고, 서비스가 화면 상단의 새로운 활동에서 알람 대화 상자를 시작합니다. 사용자가 확인을 클릭하여 대화 상자가 사라집니다. 화면이 사라지면 원래 화면으로 돌아 왔지만 원래 화면은 변경되지 않고 그대로 유지됩니다. 사용자가 한 일 때문에 원래 화면에서 문자열을 변경하기 만하면됩니다. 나는 전체 화면을 다시 만들어야한다고 생각하니? – mlw

+0

@MLW - 좋아, 여기에 접근법이있다. - 'Activity'에서 당신은 그것의 뷰 (원래 화면)를 새로 고침하고 싶다면 SharedPreferences의 데이터를 다시 읽고'Activity.onResume()'의 뷰를 다시 채워 넣어야한다. –

+0

위대한 답변, 작동, 감사합니다. – mlw

0

데이터가 변경되어보기를 새로 고침해야하는 경우 데이터가 실제로 어떻게 변경됩니까? 별도의 스레드에 있거나, 주기적으로 (RSS 피드를 폴링하는 등) 무언가를 원합니까?

0

비슷한 문제가있었습니다. 나는 라디오 그룹을 가지고 있었고 각 라디오 버튼에는 라벨이 붙어있었습니다. 화면이 회전 할 때 동일한 ID를 가진 라디오 버튼 & 라디오 버튼과 다른 레이아웃을 사용했습니다. onCreate()에서 setContentView()를 호출했습니다. 회전 후 "오래된"레이블이 새 레이아웃 (기괴한)에 표시됩니다. onContentView()를 onResume으로 옮기면 모든 것이 정상적으로 업데이트되는 것 같습니다. 위의 그의 대답 Arhimed에게 감사드립니다.

관련 문제