您的位置:首页 > 其它

scrollView嵌套的listview里又嵌套了GridView,实现下拉刷新和加载更多(附源码)亲测可用

2016-09-08 18:35 344 查看
ScrollView嵌套ListView/GridView显示不全的问题,重写ListView/GridView的onMeasue()方法即可。

ListView里如果又嵌套了GridView,重写GridView中的onMeasue()方法即可,如下所示。

如下所示加入一行代码即可,构造函数最好把三个写全,万无一失,xml里默认调用的是带两个参数的构造函数。

public class MyListView extends ListView {

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

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

public MyListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}

}
ListView里嵌套GridView,点击ListView的某个item不响应:(下面两步走)

1.将ListView的item布局里,那个最外层的GridView添加一个属性,android:descendantFocusability=”blocksDescendants”

该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。
属性的值有三种:
        beforeDescendants:viewgroup会优先其子类控件而获取到焦点
        afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
        blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
2.在ListView绑定的adapter中,获取到GridView控件,然后设置:

<pre name="code" class="java">holder.imgGrid.setClickable(false);
holder.imgGrid.setPressed(false);
holder.imgGrid.setEnables(false);



ScrollView中嵌套ListView,默认显示的是底部,如果修改为默认显示顶部呢?

<pre name="code" class="java">listView.setFocusable(false);  //ListView默认不获取焦点即可显示顶部




其实我想实现的是ScrollView嵌套ListView, ListView中又嵌套了GridView,ListView中的数据源是网络加载过来,需要实现加载数据、下拉刷新、加载更多。
单独的ListView下拉刷新可以用SwipeRefreshLayout,加载更多可以通过ListView实现onScrollListener来实现,详情见http://blog.csdn.net/zhenzhen9310/article/details/51126597

而ScrollView中嵌套了ListView,ListView的滑动监听就失效了(与ScrollView中冲突了),虽然可以通过方法解决监听失效问题,但是我不喜欢事情变得太复杂了。

然后这里放弃了让listView监听滑动事件,这里可以采用两种方案,都亲测可用,方法好像差不多。

1. 使用SwipeRefreshLayout来实现下拉刷新和上拉加载功能即可,里面了嵌套ListView和GridView,listView外可包裹scrollView.

http://download.csdn.net/detail/zhenzhen9310/9625560  (免积分下载)

2.自定义一个LinearLayou来包裹住ListView,实现下拉刷新和加载更多的功能。

http://download.csdn.net/detail/zhenzhen9310/9625546 
(免积分下载)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐