我正在尝试加载一个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);
}
});
}
正如你所看到的,我基本上只是在重新创建列表视图,是否可以让它更平滑,没有延迟,对内存和性能有好处?
答案 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是 生成的一切运行顺利,我很乐意加载 列表视图也很顺利,没有明显的延迟。
为了实现这一目标,您可以使用FragmentStatePageAdapter
和setOffscreenPageLimit(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以来已弃用