android 群英传笔记 listview的一些相关小记录

一:ListView常用优化技巧

1.使用ViewHolder模式提高效率:充分利用了视图缓存机制,避免每次都调用getview()的时候去findViewById实例化控件。在adapter中定义一个ViewHolder即可

2.设置子item间分割性:在XML中  android:dividerHeight="10dp"

android:divider=“@android:color/darker_gray”     //设置成@null时为透明

3.隐藏滚动条:android:scrollbars=“none”

4.取消listview的item点击效果:android:listSelector="#000000"

5.设置listview需要显示在第几项: lstview.setSelection(N) N就是需要现实的第N个Item这个方法类似乳scrollTo是瞬间完成移动的,除此之外,还可以使用   listview.smoothScrollBy(distance,duration)

listview.smoothScrollByOffset(offset)

listview.smoothScrollToPosition(index)来实现平滑移动

6.动态修改listview  修改listview的数据源调用listview的adapter.notifyDateSetChanged()

7.遍历所有的item

for(int i=0;i<listView.getChildCount();i++){

View view = listView.getChildAt(i)

}

8.处理空的listview:listview设置了setEmptyView(R.id.empty_view)的方法,当填充listview的数据源为空时,就会显示empty_view。这个布局就写在与listview布局同级的activity布局中。这个activity用framelayout布局就行。

9.listview滑动监听:

onTouchListener 是view中的监听事件 :通过监听ACTION_DOWN, ACTION_MOVE ,ACTION_UP,这三个事件发生时的坐标,就可以判断用户滑动的方向,并在不同的事件中进行相应的逻辑处理。

onScollListener 是AbsListView的监听事件:可以监听listview的滚动状态。可以判断是否滚动到最后一行,判断上滑还是下滑。

二 listview的常用扩展

不同种类的item布局,在listview的adapter中

 @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
       if (view != null){
           if (getItemViewType(i) == 0){
//               给viewholder填充一种布局
           }else {
//               给viewholder填充另外一种布局
           }
       }
        return view;
    }


    @Override
    public int getItemViewType(int position) {
//       这里返回数据源中的item类型
        return  dataList.get(position).getType();
    }


    @Override
    public int getViewTypeCount() {
//        这里返回数据源中不同item类型的种类
        return 2;
    }





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值