2011-02-15 2 views
0

TabActivity를 확장하는 TV Guide 활동이 있습니다. 탭은TabSpec의 활동을 강제적으로보기로 업데이트 하시겠습니까?

각각의 TabHost.TabSpec 함유량과 같이 ListActivity 연장 다른 활동 (GuideListActivity)로 설정
Today|Wed|Thu|Fri|Sat|Sun|Mon 

...

private void AddGuideTab(String tag, String indicator, String startDate, String endDate) { 
    Intent intent = new Intent().setClass(this, GuideListActivity.class); 

    // Set other Intent stuff 

    TabHost.TabSpec spec = tabHost.newTabSpec(tag).setIndicator(indicator).setContent(intent); 
    tabHost.addTab(spec); 
} 

이 날을 준다 (예) 표시되어 하나의 채널에 대한 모든 TV 프로그램의 7 일 목록. 지금까지 좋은 모든 것.

문제는 사용자가 다른 채널의 목록을 볼하고자 할 때 깨끗하게

나는 사용자가 팝업 '채널 선택'대화 상자를 생성하는 누를 수있는 버튼이 있습니다 ....이 모든 것을 다시하는 방법입니다. 대화 상자가 올바르게 새 채널 이름/번호를 반환하지만 각 TabSpec/GuideListActivity를 다시 시작하거나 ListView를 다시 채워야하는 기존 GuideListActivity를 알려주는 방법을 알아낼 수 없습니다.

무엇이 누락 되었습니까? 나는 문서를 읽는 원에서 돌고있는 것처럼 보입니다.

+0

일부 데이터가 나열된 목록이 있고 일부 데이터 업데이트 작업에서 업데이트 된 데이터를 표시하도록 목록보기를 업데이트 하시겠습니까? 너보고있어? – Javanator

답변

0

내 주요 문제는 각 GuideListActivity에 채널이 변경되었음을 알리는 방법에있었습니다.

BroadListReceiver를 확장하는 GuideListActivity에 중첩 클래스를 만들어 TabActivity가 sendStickyBroadcast();을 사용하여 현재 채널 선택을 포함하는 고정 인 텐트를 보내도록했습니다. GuideListAvtivity가 재개 될 때마다 끈적 인 Intent를 검사하고 채널 선택이 변경되면 ListView를 조정할 수 있습니다.

1

귀하의 요구 사항이 바로 맞는 경우 ActivityListView이 표시됩니다. 데이터 업데이트의 경우 ListView을 새로 고침해야 할 경우 AdapterListViewnotifyDataSetChanged() 인 함수를 호출해야합니다. 그러면 ListView에게보기를 다시 작성하도록 지시합니다.

((BaseAdapter)(listView.getAdapter())).notifyDataSetChanged(); 
+0

감사하지만 각 GuideListActivity는 자체 '데이터 세트'를 담당합니다. 각자에게 ListView를 채우는 데 사용하는 SimpleCursorAdapter를 업데이트하기 위해 새 SQL 쿼리를 수행해야한다고 알려주는 main (TabActivity)이 필요합니다. – Squonk

+0

TabActivity에서 각 목록보기의 참조를 유지하고 db 쿼리 후 모든 데이터를 업데이트 한 후 모든 사용자에 대해 dataSetChanged를 호출합니다. – Javanator

+0

내가하려고하는 점은 각 TabSpec의 'content'는 ListActivity (ListView가 아님)라는 것입니다. 내 TabActivity가 ListActivity의 ListView에 대해 아는 것을 원하지 않습니다. TabActivity는 사용자가보고 싶은 TV 채널을 알고 있으며 사용자가 다른 TV 채널의 데이터를 보려는 각 ListActivity를 말합니다. 각 ListActivity 새로운 SQL 쿼리를 수행하고 자체 ListView를 업데이트합니다. – Squonk

관련 문제