ListView使用技巧

《Android群英传》读书记录

1、使用ViewHolder模式提高效率

  在Adapter里定义一个内部类ViewHoleder ,将布局中的空间作为成员变量即可。
  ......
    @Override
public View getView(int positon ,View contentView ,ViewGroup parent){
        ViewHolder holder = null;
            //判断是否缓存
        if ( convertView == null ){
            holder = new ViewHolder();
            convertView= mInflater.inflate(R.layout.view_item,null);
            holder.img = (ImageView) convertView.findViewById(R.id.iv);
            holder.title = (TextView) convertView.findViewById(R.id.tv);
            convertView.setTag(holder);
    }else{
            //通过tag找缓存的布局
            holder = (ViewHolder)convertView.getTag();
    }
      holder.img.setBackgroundResource(R.mipmap.background);
      holder.title.setText(mData.get(position));

      return  convertView;
}

public final class ViewHolder{
    public  ImageView img;
    public  TextView  title;
}
......

2、设置分割线

android:divider="@android:color/red”
android:dividerHeight="10dp"

android:divider="@null”//透明

3、隐藏滚动条

android:scrollbars = "none"

4、取消ListView的item点击效果

android:listSelector = "#00000000"
android:listSelector = "@android:color/transparent"

5、设置ListView需要显示在第几项

listview.setSelection( n );

6、动态更新数据

listview.notifyDataSetChanged();
此方法必须保证数据list仍然是同一个list

7、遍历LlistView里所有item

  for(int i = 0; i < mListView.getChildCount();i++){
    View = view = mListView.getChildAt(i);
}

8、处理空的listview

 listview.setEmptyView(findViewById(R.layout.empty_view));

9、滑动监听

OnTounchListener 是View中的监听事件根据 event.getAction()返回的三个事件来处理相应逻辑。ACTION_DOWN(触摸时操作)、ACTION_MOVE(移动时操作)和ACTION_UP(离开时操作)

OnScrollListener 是AbsListView 中的监听事件,有两个回调方法:onScrollStateChanged()和onScroll()。

onScrollStateChanged方法,是根据参数scrollState来决定回调次数,scrollState有三种模式 :
SCROLL_STATE_IDLE:滚动停止时
SCROLL_STATE_TOUCH_SCROLL :正在滚动时
SCROLL_STATE_FLING:手指抛动时,即用力滑动后,在离开后listview由于惯性继续滑动的状态。
当没有做抛动的状态时,这个方法回调两次,否则会回调三次。

onScroll方法,在listview滚动时会一直回调,方法中的三个int参数显示当前listview的滚动状态。
firstVisibleItem:当前能看见的第一个item的id(从0开始)
visibleItenCount:当前能看见的item总数(包括没有显示完整的,显示一半的也算)
totalItemCount:整个listview的item总数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值