[android-developers] ListView inside a tabhost not displaying content initially

2012-06-20 Thread Simon Giddings
I have a TabActivity containing a series of four tabs and a listview.
Each of the tabs reference the same listview.
When the activity is initially displayed, the listview is not displayed.
However, clicking on another tab will display it correctly and clicking 
back on the first tab will also display it correctly.
The content of the listview is changed depending on the selected tab.

Here is my XML layout :
?xml version=1.0 encoding=utf-8?
TabHost xmlns:android=http://schemas.android.com/apk/res/android;
android:id=@android:id/tabhost
android:layout_width=match_parent
android:layout_height=match_parent 

LinearLayout
android:layout_width=fill_parent
android:layout_height=fill_parent
android:orientation=vertical 

TabWidget
android:id=@android:id/tabs
android:layout_width=fill_parent
android:layout_height=wrap_content /

FrameLayout
android:id=@android:id/tabcontent
android:layout_width=fill_parent
android:layout_height=fill_parent 

ListView
android:id=@+id/listPoisFound
android:layout_width=match_parent
android:layout_height=wrap_content 
/ListView

/FrameLayout
/LinearLayout

/TabHost

The tabs are initialised like this :
TabHost tabhost = null;
TabHost.TabSpec spec = null;
// get the tabhost
tabhost = getTabHost();

// create the individual tabs
spec = tabhost.newTabSpec(first);
spec.setIndicator(First);
spec.setContent(R.id.list);
tabhost.addTab(spec);

spec = tabhost.newTabSpec(second);
spec.setIndicator(Second);
spec.setContent(R.id.list);
tabhost.addTab(spec);

spec = tabhost.newTabSpec(third);
spec.setIndicator(Third);
spec.setContent(R.id.list);
tabhost.addTab(spec);

spec = tabhost.newTabSpec(fourth);
spec.setIndicator(Fourth);
spec.setContent(R.id.list);
tabhost.addTab(spec);

tabhost.setCurrentTab(0);

tabhost.setOnTabChangedListener(this);

Has anyone come across this problem ?
What is the solution ?

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Re: [android-developers] ListView inside a tabhost not displaying content initially

2012-06-20 Thread Mark Murphy
On Wed, Jun 20, 2012 at 11:41 AM, Simon Giddings
mr.s.giddi...@gmail.com wrote:
 I have a TabActivity containing a series of four tabs and a listview.
 Each of the tabs reference the same listview.

I have no idea if this is supported.

 What is the solution ?

Try using separate ListViews, one per tab.

-- 
Mark Murphy (a Commons Guy)
http://commonsware.com | http://github.com/commonsguy
http://commonsware.com/blog | http://twitter.com/commonsguy

Android Training in DC: http://marakana.com/training/android/

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


Re: [android-developers] ListView inside a tabhost not displaying content initially

2012-06-20 Thread Justin Anderson
Just out of curiosity, try doing this:

*tabhost.setCurrentTab(1);
tabhost.setCurrentTab(0);
*
Does your list show up at that point?

Thanks,
Justin Anderson
MagouyaWare Developer
http://sites.google.com/site/magouyaware


On Wed, Jun 20, 2012 at 9:41 AM, Simon Giddings mr.s.giddi...@gmail.comwrote:

 I have a TabActivity containing a series of four tabs and a listview.
 Each of the tabs reference the same listview.
 When the activity is initially displayed, the listview is not displayed.
 However, clicking on another tab will display it correctly and clicking
 back on the first tab will also display it correctly.
 The content of the listview is changed depending on the selected tab.

 Here is my XML layout :
 ?xml version=1.0 encoding=utf-8?
 TabHost xmlns:android=http://schemas.android.com/apk/res/android;
 android:id=@android:id/tabhost
 android:layout_width=match_parent
 android:layout_height=match_parent 

 LinearLayout
 android:layout_width=fill_parent
 android:layout_height=fill_parent
 android:orientation=vertical 

 TabWidget
 android:id=@android:id/tabs
 android:layout_width=fill_parent
 android:layout_height=wrap_content /

 FrameLayout
 android:id=@android:id/tabcontent
 android:layout_width=fill_parent
 android:layout_height=fill_parent 

 ListView
 android:id=@+id/listPoisFound
 android:layout_width=match_parent
 android:layout_height=wrap_content 
 /ListView

 /FrameLayout
 /LinearLayout

 /TabHost

 The tabs are initialised like this :
 TabHost tabhost = null;
 TabHost.TabSpec spec = null;
 // get the tabhost
 tabhost = getTabHost();

 // create the individual tabs
 spec = tabhost.newTabSpec(first);
 spec.setIndicator(First);
 spec.setContent(R.id.list);
 tabhost.addTab(spec);

 spec = tabhost.newTabSpec(second);
 spec.setIndicator(Second);
 spec.setContent(R.id.list);
 tabhost.addTab(spec);

 spec = tabhost.newTabSpec(third);
 spec.setIndicator(Third);
 spec.setContent(R.id.list);
 tabhost.addTab(spec);

 spec = tabhost.newTabSpec(fourth);
 spec.setIndicator(Fourth);
 spec.setContent(R.id.list);
 tabhost.addTab(spec);

 tabhost.setCurrentTab(0);

 tabhost.setOnTabChangedListener(this);

 Has anyone come across this problem ?
 What is the solution ?

 --
 You received this message because you are subscribed to the Google
 Groups Android Developers group.
 To post to this group, send email to android-developers@googlegroups.com
 To unsubscribe from this group, send email to
 android-developers+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/android-developers?hl=en

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Re: [android-developers] ListView inside a tabhost not displaying content initially

2012-06-20 Thread Justin Anderson
Also, what does your OnTabChangedListener code do?

Thanks,
Justin Anderson
MagouyaWare Developer
http://sites.google.com/site/magouyaware


On Wed, Jun 20, 2012 at 9:46 AM, Justin Anderson magouyaw...@gmail.comwrote:

 Just out of curiosity, try doing this:

 *tabhost.setCurrentTab(1);
 tabhost.setCurrentTab(0);
 *
 Does your list show up at that point?

 Thanks,
 Justin Anderson
 MagouyaWare Developer
 http://sites.google.com/site/magouyaware



 On Wed, Jun 20, 2012 at 9:41 AM, Simon Giddings 
 mr.s.giddi...@gmail.comwrote:

 I have a TabActivity containing a series of four tabs and a listview.
 Each of the tabs reference the same listview.
 When the activity is initially displayed, the listview is not displayed.
 However, clicking on another tab will display it correctly and clicking
 back on the first tab will also display it correctly.
 The content of the listview is changed depending on the selected tab.

 Here is my XML layout :
 ?xml version=1.0 encoding=utf-8?
 TabHost xmlns:android=http://schemas.android.com/apk/res/android;
 android:id=@android:id/tabhost
 android:layout_width=match_parent
 android:layout_height=match_parent 

 LinearLayout
 android:layout_width=fill_parent
 android:layout_height=fill_parent
 android:orientation=vertical 

 TabWidget
 android:id=@android:id/tabs
 android:layout_width=fill_parent
 android:layout_height=wrap_content /

 FrameLayout
 android:id=@android:id/tabcontent
 android:layout_width=fill_parent
 android:layout_height=fill_parent 

 ListView
 android:id=@+id/listPoisFound
 android:layout_width=match_parent
 android:layout_height=wrap_content 
 /ListView

 /FrameLayout
 /LinearLayout

 /TabHost

 The tabs are initialised like this :
 TabHost tabhost = null;
 TabHost.TabSpec spec = null;
 // get the tabhost
 tabhost = getTabHost();

 // create the individual tabs
 spec = tabhost.newTabSpec(first);
 spec.setIndicator(First);
 spec.setContent(R.id.list);
 tabhost.addTab(spec);

 spec = tabhost.newTabSpec(second);
 spec.setIndicator(Second);
 spec.setContent(R.id.list);
 tabhost.addTab(spec);

 spec = tabhost.newTabSpec(third);
 spec.setIndicator(Third);
 spec.setContent(R.id.list);
 tabhost.addTab(spec);

 spec = tabhost.newTabSpec(fourth);
 spec.setIndicator(Fourth);
 spec.setContent(R.id.list);
 tabhost.addTab(spec);

 tabhost.setCurrentTab(0);

 tabhost.setOnTabChangedListener(this);

 Has anyone come across this problem ?
 What is the solution ?

 --
 You received this message because you are subscribed to the Google
 Groups Android Developers group.
 To post to this group, send email to android-developers@googlegroups.com
 To unsubscribe from this group, send email to
 android-developers+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/android-developers?hl=en




-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Re: [android-developers] ListView inside a tabhost not displaying content initially

2012-06-20 Thread Simon Giddings
Wow, I hadn't expected replies so quickly !

@MagouyaWare - To answer your question, the OnTabChangedListener code 
rebuilds the listview content.
I have indeed stepped through this to ensure that it does this correctly 
before the first display.

If I call tabhost.setCurrentTab(1) instead of tabhost.setCurrentTab(0), 
then the initial display is correct.

To answer @Mark Murphy (a Commons Guy), when I subsequently click through 
the tabs, the single listview is correctly updated and displayed.
It just doesn't display correctly upon initial display.


On Wednesday, 20 June 2012 17:47:15 UTC+2, MagouyaWare wrote:

 Also, what does your OnTabChangedListener code do?

 Thanks,
 Justin Anderson
 MagouyaWare Developer
 http://sites.google.com/site/magouyaware


 On Wed, Jun 20, 2012 at 9:46 AM, Justin Anderson wrote:

 Just out of curiosity, try doing this:

 *tabhost.setCurrentTab(1);
 tabhost.setCurrentTab(0);
 *
 Does your list show up at that point?

 Thanks,
 Justin Anderson
 MagouyaWare Developer
 http://sites.google.com/site/magouyaware



 On Wed, Jun 20, 2012 at 9:41 AM, Simon Giddings  wrote:

 I have a TabActivity containing a series of four tabs and a listview.
 Each of the tabs reference the same listview.
 When the activity is initially displayed, the listview is not displayed.
 However, clicking on another tab will display it correctly and clicking 
 back on the first tab will also display it correctly.
 The content of the listview is changed depending on the selected tab.

 Here is my XML layout :
 ?xml version=1.0 encoding=utf-8?
 TabHost xmlns:android=http://schemas.android.com/apk/res/android;
 android:id=@android:id/tabhost
 android:layout_width=match_parent
 android:layout_height=match_parent 
 
 LinearLayout
 android:layout_width=fill_parent
 android:layout_height=fill_parent
 android:orientation=vertical 
 
 TabWidget
 android:id=@android:id/tabs
 android:layout_width=fill_parent
 android:layout_height=wrap_content /
 
 FrameLayout
 android:id=@android:id/tabcontent
 android:layout_width=fill_parent
 android:layout_height=fill_parent 

 ListView
 android:id=@+id/listPoisFound
 android:layout_width=match_parent
 android:layout_height=wrap_content 
 /ListView
 
 /FrameLayout
 /LinearLayout

 /TabHost

 The tabs are initialised like this :
 TabHost tabhost = null;
 TabHost.TabSpec spec = null;
 // get the tabhost
 tabhost = getTabHost();
 
 // create the individual tabs
 spec = tabhost.newTabSpec(first);
 spec.setIndicator(First);
 spec.setContent(R.id.list);
 tabhost.addTab(spec);
 
 spec = tabhost.newTabSpec(second);
 spec.setIndicator(Second);
 spec.setContent(R.id.list);
 tabhost.addTab(spec);
 
 spec = tabhost.newTabSpec(third);
 spec.setIndicator(Third);
 spec.setContent(R.id.list);
 tabhost.addTab(spec);
 
 spec = tabhost.newTabSpec(fourth);
 spec.setIndicator(Fourth);
 spec.setContent(R.id.list);
 tabhost.addTab(spec);
 
 tabhost.setCurrentTab(0);
 
 tabhost.setOnTabChangedListener(this);

 Has anyone come across this problem ?
 What is the solution ?

 -- 
 You received this message because you are subscribed to the Google
 Groups Android Developers group.
 To post to this group, send email to android-developers@googlegroups.com
 To unsubscribe from this group, send email to
 android-developers+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/android-developers?hl=en





-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Re: [android-developers] ListView inside a tabhost not displaying content initially

2012-06-20 Thread Justin Anderson

 If I call tabhost.setCurrentTab(1) instead of tabhost.setCurrentTab(0),
 then the initial display is correct.


I think you misunderstood me... I wanted you to call both of them... First,
set the current tab to 1 and then to 0...  Does the listview display
correctly on tab 0 if you do this?  My guess is that it would.  This is
probably not the best way to solve the problem though, but would work be a
potential workaround if all else fails.

To answer your question, the OnTabChangedListener code rebuilds the
 listview content.


I noticed you are setting the OnTabChangedListener after setting the
current tab... What happens if you try setting the change listener first?
You may need to verify that this method gets called when you do this... if
the tab host defaults the current tab to 0 and then you set it to 0 it may
decide it doesn't need to do anything... In which case, you would need to
call the method for a tab change manually yourself first.

To answer @Mark Murphy (a Commons Guy), when I subsequently click through
 the tabs, the single listview is correctly updated and displayed.
 It just doesn't display correctly upon initial display.


Just because it seems to work doesn't mean it is actually supported.  If
this is not the intended way to use a tabhost then it may just work as a
side-effect of other things, but you may see weirdness as a result of it...
If this isn't supposed to be supported then the devs likely have not tested
this scenario...

Thanks,
Justin Anderson
MagouyaWare Developer
http://sites.google.com/site/magouyaware


On Wed, Jun 20, 2012 at 10:00 AM, Simon Giddings mr.s.giddi...@gmail.comwrote:

 Wow, I hadn't expected replies so quickly !

 @MagouyaWare - To answer your question, the OnTabChangedListener code
 rebuilds the listview content.
 I have indeed stepped through this to ensure that it does this correctly
 before the first display.

 If I call tabhost.setCurrentTab(1) instead of tabhost.setCurrentTab(0),
 then the initial display is correct.

 To answer @Mark Murphy (a Commons Guy), when I subsequently click through
 the tabs, the single listview is correctly updated and displayed.
 It just doesn't display correctly upon initial display.


 On Wednesday, 20 June 2012 17:47:15 UTC+2, MagouyaWare wrote:

 Also, what does your OnTabChangedListener code do?

 Thanks,
 Justin Anderson
 MagouyaWare Developer
 http://sites.google.com/site/**magouyawarehttp://sites.google.com/site/magouyaware


 On Wed, Jun 20, 2012 at 9:46 AM, Justin Anderson wrote:

  Just out of curiosity, try doing this:

 *tabhost.setCurrentTab(1);
 tabhost.setCurrentTab(0);
 *
 Does your list show up at that point?

 Thanks,
 Justin Anderson
 MagouyaWare Developer
 http://sites.google.com/site/**magouyawarehttp://sites.google.com/site/magouyaware



 On Wed, Jun 20, 2012 at 9:41 AM, Simon Giddings  wrote:

 I have a TabActivity containing a series of four tabs and a listview.
 Each of the tabs reference the same listview.
 When the activity is initially displayed, the listview is not displayed.
 However, clicking on another tab will display it correctly and clicking
 back on the first tab will also display it correctly.
 The content of the listview is changed depending on the selected tab.

 Here is my XML layout :
 ?xml version=1.0 encoding=utf-8?
 TabHost 
 xmlns:android=http://schemas.**android.com/apk/res/androidhttp://schemas.android.com/apk/res/android
 
 android:id=@android:id/**tabhost
 android:layout_width=match_**parent
 android:layout_height=match_**parent 

 LinearLayout
 android:layout_width=fill_**parent
 android:layout_height=fill_**parent
 android:orientation=vertical 

 TabWidget
 android:id=@android:id/tabs
 android:layout_width=fill_**parent
 android:layout_height=wrap_**content /

 FrameLayout
 android:id=@android:id/**tabcontent
 android:layout_width=fill_**parent
 android:layout_height=fill_**parent 

 ListView
 android:id=@+id/**listPoisFound
 android:layout_width=match_**parent
 android:layout_height=wrap_**content 
 /ListView

 /FrameLayout
 /LinearLayout

 /TabHost

 The tabs are initialised like this :
 TabHost tabhost = null;
 TabHost.TabSpec spec = null;
 // get the tabhost
 tabhost = getTabHost();

 // create the individual tabs
 spec = tabhost.newTabSpec(first);
 spec.setIndicator(First);
 spec.setContent(R.id.list);
 tabhost.addTab(spec);

 spec = tabhost.newTabSpec(second);
 spec.setIndicator(Second);
 spec.setContent(R.id.list);
 tabhost.addTab(spec);

 spec = tabhost.newTabSpec(third);
 spec.setIndicator(Third);
 spec.setContent(R.id.list);
 tabhost.addTab(spec);

 spec = tabhost.newTabSpec(fourth);
 

Re: [android-developers] ListView inside a tabhost not displaying content initially

2012-06-20 Thread Simon Giddings
Hi Justin,

Yes, you are right.  I went too fast in my reply.  I did indeed make the 
two calls and it did indeed work.
I was wanting to limit the number of resources needed in this activity - 
where in my use of one unique ListView.

After this short discussion, I think I will try to use a single list view 
per tab and see what the performance hit will be.


On Wednesday, 20 June 2012 18:09:56 UTC+2, MagouyaWare wrote:

 If I call tabhost.setCurrentTab(1) instead of tabhost.setCurrentTab(0), 
 then the initial display is correct.


 I think you misunderstood me... I wanted you to call both of them... 
 First, set the current tab to 1 and then to 0...  Does the listview display 
 correctly on tab 0 if you do this?  My guess is that it would.  This is 
 probably not the best way to solve the problem though, but would work be a 
 potential workaround if all else fails.

 To answer your question, the OnTabChangedListener code rebuilds the 
 listview content.


 I noticed you are setting the OnTabChangedListener after setting the 
 current tab... What happens if you try setting the change listener first?  
 You may need to verify that this method gets called when you do this... if 
 the tab host defaults the current tab to 0 and then you set it to 0 it may 
 decide it doesn't need to do anything... In which case, you would need to 
 call the method for a tab change manually yourself first.

 To answer @Mark Murphy (a Commons Guy), when I subsequently click through 
 the tabs, the single listview is correctly updated and displayed.
 It just doesn't display correctly upon initial display.


 Just because it seems to work doesn't mean it is actually supported.  If 
 this is not the intended way to use a tabhost then it may just work as a 
 side-effect of other things, but you may see weirdness as a result of it... 
 If this isn't supposed to be supported then the devs likely have not tested 
 this scenario...

 Thanks,
 Justin Anderson
 MagouyaWare Developer
 http://sites.google.com/site/magouyaware


 On Wed, Jun 20, 2012 at 10:00 AM, Simon Giddings wrote:

 Wow, I hadn't expected replies so quickly !

 @MagouyaWare - To answer your question, the OnTabChangedListener code 
 rebuilds the listview content.
 I have indeed stepped through this to ensure that it does this correctly 
 before the first display.

 If I call tabhost.setCurrentTab(1) instead of tabhost.setCurrentTab(0), 
 then the initial display is correct.

 To answer @Mark Murphy (a Commons Guy), when I subsequently click 
 through the tabs, the single listview is correctly updated and displayed.
 It just doesn't display correctly upon initial display.


 On Wednesday, 20 June 2012 17:47:15 UTC+2, MagouyaWare wrote:

 Also, what does your OnTabChangedListener code do?

 Thanks,
 Justin Anderson
 MagouyaWare Developer
 http://sites.google.com/site/**magouyawarehttp://sites.google.com/site/magouyaware


 On Wed, Jun 20, 2012 at 9:46 AM, Justin Anderson wrote:

  Just out of curiosity, try doing this:

 *tabhost.setCurrentTab(1);
 tabhost.setCurrentTab(0);
 *
 Does your list show up at that point?

 Thanks,
 Justin Anderson
 MagouyaWare Developer
 http://sites.google.com/site/**magouyawarehttp://sites.google.com/site/magouyaware



 On Wed, Jun 20, 2012 at 9:41 AM, Simon Giddings  wrote:

 I have a TabActivity containing a series of four tabs and a listview.
 Each of the tabs reference the same listview.
 When the activity is initially displayed, the listview is not 
 displayed.
 However, clicking on another tab will display it correctly and 
 clicking back on the first tab will also display it correctly.
 The content of the listview is changed depending on the selected tab.

 Here is my XML layout :
 ?xml version=1.0 encoding=utf-8?
 TabHost 
 xmlns:android=http://schemas.**android.com/apk/res/androidhttp://schemas.android.com/apk/res/android
 
 android:id=@android:id/**tabhost
 android:layout_width=match_**parent
 android:layout_height=match_**parent 
 
 LinearLayout
 android:layout_width=fill_**parent
 android:layout_height=fill_**parent
 android:orientation=vertical 
 
 TabWidget
 android:id=@android:id/tabs
 android:layout_width=fill_**parent
 android:layout_height=wrap_**content /
 
 FrameLayout
 android:id=@android:id/**tabcontent
 android:layout_width=fill_**parent
 android:layout_height=fill_**parent 

 ListView
 android:id=@+id/**listPoisFound
 android:layout_width=match_**parent
 android:layout_height=wrap_**content 
 /ListView
 
 /FrameLayout
 /LinearLayout

 /TabHost

 The tabs are initialised like this :
 TabHost tabhost = null;
 TabHost.TabSpec spec = null;
 // get the tabhost
 tabhost = getTabHost();
 
 // create the individual tabs
 spec =