android解决listview与scrollview的冲突、自定义listview的高度以及上下拉刷新

     很多时候我们需要使用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 >

那么完事大吉了,一起学习一起分享!!!

时间: 2025-01-04 10:48:03

android解决listview与scrollview的冲突、自定义listview的高度以及上下拉刷新的相关文章

android 开发-ListView与ScrollView事件冲突处理(事件分发机制处理)

ListView和ScrollView都存在滚动的效果,所以一般不建议listView和scrollView进行嵌套使用,但有些需求则需要用到两者嵌套.在android的学习中学了一种事件分发处理机制. 如果listView显示在UI上部,而如imageView等显示在UI下部. 首先为listView注册一个滑动监听事件 通过为listView设置固定高度,并注册滑动监听事件.在划动监听事件中,记录用户是否滑动至listView数据底部. 通过activity的dispatchTouchEve

android开发最常用例子整理----(2)自定义ListView(SimpleAdapter实现)

android开发最常用例子整理----(2)自定义ListView(SimpleAdapter实现) 一.Activity MainActivity.java源码: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layou

Android高级控件(六)——自定义ListView高仿一个QQ可拖拽列表的实现

Android高级控件(六)--自定义ListView高仿一个QQ可拖拽列表的实现 我们做一些好友列表或者商品列表的时候,居多的需求可能就是需要列表拖拽了,而我们选择了ListView,也是因为使用ListView太久远了,导致对他已经有浓厚的感情了,我们之前也是写过几篇关于ListView的博文 Android实训案例(三)--实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果! Android高级控件(一)--ListView绑定CheckBox实现全选,增加和删除等功能 A

sencha 2.3中自定义PullRefreshFn给PullRefresh添加下拉刷新事件

Sencha removed the refreshFn from the pullrefresh plugin in ST 2.2. Here is an user extension with gives the old functionality back to you. /** * This user extension gives st 2.3.0 Pullrefresh the RefreshFn back * based on sencha touch 2.3.0 * * @cla

使用LinearLayout实现ListView,解决ListView和ScrollView滚动冲突

在项目中,我们常常会遇到一个ScrollView里面会嵌套ListView的情况,但往往你会发现,ListView和ScrollView的滚动时间会有冲突问题,造成ListView不能完全显示.虽然网上有给出解决方案,但事实上并不好用,并不完美. public void setListViewHeightBasedOnChildren(ListView listView) { // 获取ListView对应的Adapter ListAdapter listAdapter = listView.g

android开发最常用例子整理----(3)自定义ListView(自定义BaseAdapter实现)

在上一个教程中,我们使用SimpleAdapter实现自定义ListView,但是有一点不方便的是,如果要对每一个ListView的item选项进行不同的样式设置,就很麻烦,因为SimpleAdapter使用的是统一的风格样式.如果要实现不同item使用不同的风格样式,那么就要通过集成BaseAdapter来实现. 一.Activity MainActivity.java源码: public class MainActivity extends Activity { @Override prot

Android 解决WebView和ScrollView滚轮滑动冲突

第一步,重写WebView的onGenericMotionEvent方法 /** * 滑轮处理 */ @Override public boolean onGenericMotionEvent(MotionEvent event) { if (callback != null) return callback.onGenericMotionEvent(event); return super.onGenericMotionEvent(event); } //定义一个接口,把滚动事件传递出去 pu

解决EditText跟ScrollView滑动冲突

etContent.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub //这句话说的意思告诉父View我自己的事件我自己处理 v.getParent().requestDisallowInterceptTouchEvent(true); return false; }

解决EditText和ScrollView滑动冲突问题

该类需要调用 OnTouchListener接口 黄色部分是需要更改部分,改为自己的edittext@Override public boolean onTouch(View view, MotionEvent motionEvent) { //触摸的是EditText并且当前EditText可以滚动则将事件交给EditText处理:否则将事件交由其父类处理 if ((view.getId() == R.id.bags_stolen_characteristic_edittext && c