ScrollView嵌套ListView listView展示及分页处理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_23575795/article/details/78478067

1.自定义ListView 重写OnMeasure方法适应ScrollView:

public class ListViewForScrollView extends ListView {
    public ListViewForScrollView(Context context) {
        super(context);
    }

    public ListViewForScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ListViewForScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    /**
     * 重写该方法,达到使ListView适应ScrollView的效果
     */
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
                MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
    }
}
2:ScrollView滑动到底部ListView分页处理:

  2.1:自定义ScrollView重写onOverScrolled方法 :

public class PageListScrollView extends ScrollView {
    private OnScrollToBottomListener mOnScrollToBottomListener;


    public PageListScrollView(Context context) {
        super(context);
    }

    public PageListScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public PageListScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }


    //滚动到底部时,clampedY变为true,此时将回调将状态传出去
    @Override
    protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
        super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
        if (scrollY > 0 && mOnScrollToBottomListener != null) {
            mOnScrollToBottomListener.onScrollBottomListener(clampedY);
        }
    }


    public void setOnScrollToBottomListener(OnScrollToBottomListener listener) {
        mOnScrollToBottomListener = listener;
    }

    public interface OnScrollToBottomListener {
        void onScrollBottomListener(boolean isBottom);
    }
}

3.在布局文件里嵌套:

<PageListScrollView
    android:id="@+id/scroll"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbars="none">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:divider="@drawable/divider"
        android:orientation="vertical"
        android:showDividers="middle">

        <!--其他布局-->
        ........
       
       <ListViewForScrollView
                android:id="@+id/listView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
</LinearLayout> </com.jingcai.apps.qualitydev.component.widget.PageListScrollView>
3.在activity中监听:
 
 
@Override
public void onScrollBottomListener(boolean isBottom) {
    if (isBottom) {
        //page+1   再次请求
        
    }
}

猜你喜欢

转载自blog.csdn.net/qq_23575795/article/details/78478067
今日推荐