在TabHost选项卡中顺利加载ListView

时间:2014-10-20 16:49:35

标签: android listview android-listview

我正在尝试加载一个listview,它从Tabhost的Tab中的服务器获取数据。但每当我切换到另一个选项卡并返回时,始终会产生ListView的延迟。生成ListView后,一切运行顺利,我很乐意顺利加载列表视图,没有明显的延迟。

我创建了一个名为loadStatuses()的方法,该方法在以下位置调用。

OnCreate和OnResumed。

private void loadStatuses() {
    getActivity().runOnUiThread(new Runnable() {
        @Override
        public void run() {
            adapter = new MyCustomAdapter(getActivity().getApplicationContext());
            adapter.setImageKey("Status");
            mListView.setAdapter(adapter);
        }
    });
}

正如你所看到的,我基本上只是在重新创建列表视图,是否可以让它更平滑,没有延迟,对内存和性能有好处?

2 个答案:

答案 0 :(得分:0)

我认为您应该使用Swipable Tab视图,因为它是一种标准方式。您可以关注以下网址:

http://developer.android.com/training/implementing-navigation/lateral.html

http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/

并从数据模型中的服务器加载数据,然后将其发送到适配器,因此在更改选项卡时不会重复加载。 加载后,您可以不间断地使用。

如果您需要任何进一步的帮助,请告诉我。

答案 1 :(得分:0)

您无需在onRsumed()上致电loadStatuses。只需在onCreate调用即可。

  

我正在尝试加载一个listview,它从一个服务器内部获取数据   Tabhost的标签。但每次我切换到另一个标签然后回来   生成ListView总是有延迟。一旦ListView是   生成的一切运行顺利,我很乐意加载   列表视图也很顺利,没有明显的延迟。

为了实现这一目标,您可以使用FragmentStatePageAdaptersetOffscreenPageLimit(Number of tabs);来重新加载您的内容。您也可以使用caches来阻止用户切换标签时反复下载。

  

嗨,我这样做的原因是因为而不是使用   setNavigationMode(ActionBar.NAVIGATION_MODE_TABS)我正在使用   导航抽屉,并使用tabhost可以同时使用   导航抽屉和标签。

     

因此我正在使用   actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD)   而是在MainActivity内部,在这种情况下是“Home”   导航抽屉我有TabHost。   我可以不使用操作栏吗?

是的,您可以使用PagerSlidingTabStrip库。我一步一步地回答如何运行它:

PagerSlidingTabStrip implement guide

另请注意ActionBar.Tab 自API级别21以来已弃用