Android ListView内的水平滚动视图未正确滚动

Android ListView内的水平滚动视图未正确滚动,android,listview,android-listview,horizontalscrollview,Android,Listview,Android Listview,Horizontalscrollview,我刚刚在ListView中实现了HorizontalScrollView。但是列表视图并没有平滑地滚动。 我想显示一个列表视图,其中一些列表项有一个水平滚动视图。我的水平滚动平滑,但Listview不平滑 下面是我的代码: <ListView android:id="@+id/list_view" android:scrollbars="none" android:visibility="gone" android:

我刚刚在ListView中实现了HorizontalScrollView。但是列表视图并没有平滑地滚动。 我想显示一个列表视图,其中一些列表项有一个水平滚动视图。我的水平滚动平滑,但Listview不平滑

下面是我的代码:

    <ListView 
        android:id="@+id/list_view"
        android:scrollbars="none"
        android:visibility="gone"
        android:divider="@color/LtGreen"
        android:dividerHeight="1dp"

        android:smoothScrollbar="true"
        android:scrollingCache="false"
        android:animationCache="false"
        android:cacheColorHint="@android:color/transparent"
        android:listSelector="@android:color/transparent"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
适配器项的load HorizontalScrollView的代码为-

    ScrollHandler mHandel = new ScrollHandler(mHolder.mainLinearType1, position);
    mHandel.loadLazyView();
我的经纪人是-

public static class ScrollHandler extends Handler{

    LinearLayout mLayout;
    int mPosition;

    public ScrollHandler(LinearLayout linear,int pos){
        mLayout = linear;
        mPosition = pos;
    }

    public void loadLazyView(){
        Runnable r = new Runnable() {
            @Override
            public void run() {
                mLayout.removeAllViews();
                for (int i = 0; i <mList.get(mPosition).getEventList().size(); i++) {
                    View additionView = mLayoutInflater.inflate(R.layout.activity_type1_subitem_view, null,false);
                    FrameLayout innerLinnerLayout=(FrameLayout)additionView.findViewById(R.id.frame_view);
                    mLayout.addView(innerLinnerLayout);
                }
            }
        };
        r.run();
    }
}
公共静态类ScrollHandler扩展处理程序{
线性布局mLayout;
整合;
公共ScrollHandler(LinearLayout linear,int-pos){
mLayout=线性;
mPosition=pos;
}
公共void loadLazyView(){
Runnable r=新的Runnable(){
@凌驾
公开募捐{
mllayout.removeallview();
对于(int i=0;i检查:


我认为这就是您所需要的。使用异步任务应该会使它变得平滑。

为什么ScrollHandler在没有执行任何特定于处理程序的工作时会扩展处理程序?逻辑可以用简单的方法实现,比如

loadLazyView (LinearLayout linear,int pos){...}
我认为这个列表很慢,因为它有复杂的层次结构。下面的链接列表列出了6种让你的滚动更平滑的方法。如果你已经看到了,请原谅

总结是

  • 减少适配器的getView中使用的条件数
  • 检查并减少日志中出现的垃圾收集警告的数量
  • 如果在滚动时加载图像,请将其删除
  • 将scrollingCache和animateCache设置为false(稍后将对此进行详细介绍)
  • 简化列表视图行布局的层次结构
  • 使用视图保持器样式

  • 您不能在android中进行嵌套滚动,而是查看页眉或页脚
    loadLazyView (LinearLayout linear,int pos){...}