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部分,它是否只发生在特定的页面上?