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

来源:互联网 发布:美化桌面的软件 编辑:程序博客网 时间:2024/05/29 08:09

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中监听:
@Overridepublic void onScrollBottomListener(boolean isBottom) {    if (isBottom) {        //page+1   再次请求
            }}