Android 在标签之间滑动时滞后?
我正在我的Android 在标签之间滑动时滞后?,android,listview,android-tabs,smoothing,Android,Listview,Android Tabs,Smoothing,我正在我的活动中实施选项卡。 我有5个选项卡,每个选项卡都包含一个列表视图(我通过asynctask获取列表视图的内容) 这就是图像: 现在代码: mViewPager .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position)
活动中实施选项卡
。
我有5个选项卡,每个选项卡都包含一个列表视图
(我通过asynctask获取列表视图的内容)
这就是图像:
现在代码:
mViewPager
.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
ab.setSelectedNavigationItem(position);
}
});
this.getSherlockActivity().getSupportActionBar().removeAllTabs();
ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
com.actionbarsherlock.app.ActionBar.Tab tab1 = ab
.newTab()
.setText("Samsung")
.setTabListener(
new TabListener<SamsungLB>(this.getSherlockActivity(),
"tabone", SamsungLB.class));
com.actionbarsherlock.app.ActionBar.Tab tab2 = ab
.newTab()
.setText("HTC")
.setTabListener(
new TabListener<HTCLB>(this.getSherlockActivity(),
"tabtwo", HTCLB.class));
com.actionbarsherlock.app.ActionBar.Tab tab3 = ab
.newTab()
.setText("LG")
.setTabListener(
new TabListener<LGLB>(this.getSherlockActivity(),
"tabthree", LGLB.class));
com.actionbarsherlock.app.ActionBar.Tab tab4 = ab
.newTab()
.setText("Sony")
.setTabListener(
new TabListener<SonyLB>(this.getSherlockActivity(),
"tabfour", SonyLB.class));
com.actionbarsherlock.app.ActionBar.Tab tab5 = ab
.newTab()
.setText("Search")
.setTabListener(
new TabListener<SearchLB>(this.getSherlockActivity(),
"tabfive", SearchLB.class));
ab.addTab(tab1);
ab.addTab(tab2);
ab.addTab(tab3);
ab.addTab(tab4);
ab.addTab(tab5);
return rootView;
}
@SuppressLint("NewApi")
public static class TabListener<T extends SherlockFragment> implements
ActionBar.TabListener {
private Fragment mFragment;
private final Activity mActivity;
private final String mTag;
private final Class<T> mClass;
public TabListener(Activity activity, String tag, Class<T> clz) {
mActivity = activity;
mTag = tag;
mClass = clz;
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
if (mFragment == null) {
mFragment = Fragment.instantiate(mActivity, mClass.getName());
ft.add(android.R.id.content, mFragment, mTag);
} else {
ft.attach(mFragment);
}
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
if (mFragment != null) {
ft.detach(mFragment);
}
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
public void onTabReselected(Tab arg0,
android.app.FragmentTransaction arg1) {
}
@SuppressLint("NewApi")
public void onTabSelected(Tab arg0, android.app.FragmentTransaction arg1) {
mViewPager.setCurrentItem(arg0.getPosition());
}
public void onTabUnselected(Tab arg0,
android.app.FragmentTransaction arg1) {
}
@Override
public void onTabSelected(com.actionbarsherlock.app.ActionBar.Tab tab,
FragmentTransaction ft) {
// TODO Auto-generated method stub
mViewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(
com.actionbarsherlock.app.ActionBar.Tab tab,
FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabReselected(
com.actionbarsherlock.app.ActionBar.Tab tab,
FragmentTransaction ft) {
// TODO Auto-generated method stub
}
}
mviewpage
.setOnPageChangeListener(新的ViewPager.SimpleOnPageChangeListener(){
@凌驾
已选择页面上的公共无效(内部位置){
ab.SETSELECTED导航项目(位置);
}
});
这个.getSherlockActivity().getSupportActionBar().removeAllTabs();
ab.setNavigationMode(操作栏.导航模式选项卡);
com.actionbarsherlock.app.ActionBar.Tab选项卡1=ab
.newTab()
.setText(“三星”)
.SetTableListener(
新建TabListener(this.getSherlockActivity(),
“塔伯恩”,三星级);
com.actionbarsherlock.app.ActionBar.Tab选项卡2=ab
.newTab()
.setText(“HTC”)
.SetTableListener(
新建TabListener(this.getSherlockActivity(),
“tabtwo”,HTCLB.class);
com.actionbarsherlock.app.ActionBar.Tab选项卡3=ab
.newTab()
.setText(“LG”)
.SetTableListener(
新建TabListener(this.getSherlockActivity(),
“tabthree”,LGLB.class);
com.actionbarsherlock.app.ActionBar.Tab选项卡4=ab
.newTab()
.setText(“索尼”)
.SetTableListener(
新建TabListener(this.getSherlockActivity(),
“tabfour”,SonyLB.class);
com.actionbarsherlock.app.ActionBar.Tab选项卡5=ab
.newTab()
.setText(“搜索”)
.SetTableListener(
新建TabListener(this.getSherlockActivity(),
“tabfive”,SearchLB.class);
ab.addTab(表1);
ab.addTab(表2);
ab.addTab(表3);
ab.addTab(表4);
ab.addTab(表5);
返回rootView;
}
@SuppressLint(“新API”)
公共静态类TabListener实现
ActionBar.TabListener{
私人碎片;
私人最终活动能力;
私有最终字符串mTag;
私人期末班;
公共TabListener(活动、字符串标记、类clz){
活动性=活动性;
mTag=标签;
mClass=clz;
}
已选择的公共事务(选项卡,碎片事务ft){
if(mFragment==null){
MFFragment=Fragment.instantiate(mActivity,mClass.getName());
ft.add(android.R.id.content、mFragment、mTag);
}否则{
ft.attach(mFragment);
}
}
已选择公共空页(选项卡,碎片事务ft){
if(mFragment!=null){
ft.分离(mFragment);
}
}
已重新选择公共无效页签(页签,碎片事务){
}
已重新选择公共选项卡(选项卡arg0,
android.app.FragmentTransaction arg1){
}
@SuppressLint(“新API”)
已选择公共事务(选项卡arg0,android.app.FragmentTransaction arg1){
setCurrentItem(arg0.getPosition());
}
已选择公共选项卡(选项卡arg0,
android.app.FragmentTransaction arg1){
}
@凌驾
已选择的公共选项卡(com.actionbarsherlock.app.ActionBar.Tab选项卡,
碎片交易(ft){
//TODO自动生成的方法存根
setCurrentItem(tab.getPosition());
}
@凌驾
已选定的公共区域(
com.actionbarsherlock.app.ActionBar.Tab选项卡,
碎片交易(ft){
//TODO自动生成的方法存根
}
@凌驾
公营机构已重新选出(
com.actionbarsherlock.app.ActionBar.Tab选项卡,
碎片交易(ft){
//TODO自动生成的方法存根
}
}
基本上,每个选项卡都有一个通过AsyncTask填充的listview。我通过JSON获得结果并对其进行解析。稍后,我通过imageloader解析图像。
为什么它落后了???
特别是当我从LG换到HTC的时候。(即使在那里,应用程序有时也会关闭!)。
感谢您的帮助,我们将不胜感激:)
更新:所有选项卡都使用相同的布局文件
代码:
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listview1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawSelectorOnTop="false" />
请提供帮助。由于您使用了许多列表视图,有多种原因会降低您的性能
如何使用适配器,例如:在不使用循环转换视图的情况下扩展新视图
列表项上的布局XML声明不正确,例如:使用非常复杂的布局
如果每次刷页面时都进行刷新,则ViewPager.setOffscreenPageLimit(int limit)可以在消耗更多内存的同时防止重新加载
如果你说你的应用程序关闭了,你应该有一些堆栈跟踪可用,张贴它有助于我们识别错误。关于3个选项。是的,我注意到每次我输入活动时都会自动刷新,即使我没有对这种行为进行编程@Chor WaiChun会看看这是否有效:谢谢!它就像一个查米人,有一个与这个话题无关的问题。当我在片段之间切换,然后返回到此片段时,选项卡不会显示listview,但它不会崩溃,即使有时我向右键入,选择器出错。我能做什么?我相信原因很可能是在片段的onresume或onpause部分,它是否只发生在特定的页面上?