Android Listview

listview相关设置

android:divider="@null" 两个上下相邻item之间的分割置空
android:dividerHeight 这个属性是上下相邻的item间的距离
android:divider="#fffff"  分割线颜色
android:dividerHeight="1dp"  分割线高度

Listview和Scrollview冲突问题
在用到Scrollview中嵌套listview时,listview只能显示一个item的问题
原文网址:
http://blog.csdn.net/wulianghuan/article/details/8627958

public static void setListViewHeightBasedOnChildren(ListView listView) {

        ListAdapter listAdapter = listView.getAdapter();
        if(listAdapter == null) {
            return;
        }
        int totalHeight = 0;
        for(int i = 0, len = listAdapter.getCount(); i < len; 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);
    }

Scrollview显示不在顶端的问题

listview.setFocusable(false);

Scrollview中有其他滑动控件时也一样

通过OnScrollListener实现上拉刷新,下拉加载


        listView.setOnScrollListener(new AbsListView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                /*
                 * scrollState值:
                 * 当屏幕停止滚动时为SCROLL_STATE_IDLE = 0;
                 * 当屏幕滚动且用户使用的触碰或手指还在屏幕上时为SCROLL_STATE_TOUCH_SCROLL = 1;
                 * 由于用户的操作,屏幕产生惯性滑动时为SCROLL_STATE_FLING = 2
                 */
                // 当滚动停止且滚动的总数等于数据的总数,上拉加载
                if (lastItem == count && scrollState == SCROLL_STATE_IDLE) {
                    //此处进行加载数据的操作
                    add();
                    return;
                }
                // 当往下拉操作
                if (firstItem == 0 && scrollState == SCROLL_STATE_IDLE) {
                    adda();
                }
            }

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
                //firstVisibleItem 表示屏幕中第一条数据在adapter中的位置
                //visibleItemCount 表示屏幕中最后一条数据在adapter中的位置
                //totalItemCount   表示adapter中的总条数
                lastItem = firstVisibleItem + visibleItemCount;// 计算出lastitem的值
                firstItem = firstVisibleItem;// 同样拿出lastitem的值
            }
        });

这个加载方案显得略有呆板,用户只要滑动到相应位置就会自动加载,没有选择的权利,而且没有动画效果,所以要看情况进行使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值