很多时候我们需要使用listview与嵌套使用,那么问题来了,listview里面自带了
滚动条,而又嵌套在scrollview里面。所以引发了一系列的冲突。listview显示不全。
今天给出一个全新的上下拉刷新与解决冲突的方案。
下载完工具后我们复制粘贴到我们自己的工程里面,使用方式和自定义view一样。
下面贴出代码
看到代码贴如也就这么回事。但是我们注意了,这个时候的listview是包裹在scroll里面的。那么滚动起来肯定不行的...接下来解决这一个冲突问题。
如下代码
//拿下适配器以及设置适配器
adpater = new Main_goos_adapter(this, slist);// 加载适配器
main_list.setAdapter(adpater);// 设置适配器
setListViewHeight(main_list);// 重置一下位置及高度
//核心的自定义设置高度的方法
/**
* 动态设置ListView的高度
*
* @param listView
* 直接扔个listview 放里面去,是不是感觉很简单呢
*/
public static void setListViewHeight(ListView listView) {
if (listView == null)
return;
ListAdapter listAdapter = listView.getAdapter();//获取listview的适配器
if (listAdapter == null) {
return;
}
int totalHeight = 0;//定义高度
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);//获取给个高度的值
listItem.measure(0, 0);//得到测量
totalHeight += listItem.getMeasuredHeight();//设置总的高度
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);//重绘高度
}
//看完后焕然大悟啊
那么问题由来了,咱的上下拉刷新砸来的啊。接下看代码
private PullToRefreshView_all mPullToRefreshView;// 下拉刷新框 先声明再拿值
//当前activity实现它的两个接口如:OnHeaderRefreshListener, OnFooterRefreshListener
mPullToRefreshView = (PullToRefreshView_all) findViewById(R.id.PullToRefreshView);
mPullToRefreshView.setOnHeaderRefreshListener(this);// 下拉加载
mPullToRefreshView.setOnFooterRefreshListener(this);// 上拉刷新
//再实现它的两个方法,俺们的下拉的就可以玩起来了
/**
* 下拉刷新
*/
@Override
public void onHeaderRefresh(PullToRefreshView_all view) {
doSomething();
}
/**
* 上拉加载
*/
@Override
public void onFooterRefresh(PullToRefreshView_all view) {
}
</textarea >
那么完事大吉了,一起学习一起分享!!!