listview 总结

1.ViewHolder
ViewHolder用何种修饰,ViewHolder初始化的次数是相同的,值为当前界面可见item+1,和concertView 的次数是一样的

2.设置ListView的分割线
(1)android :divider= “@android:color/drak_gray”  (设置ListView的分割线和它的高度)
         android  : dividerHeight = "10dp"
 (2)android divider = “@null”设置分割线为透明

3.隐藏ListView的滚动条
  android scrollbars = "none"

4.取消ListView的Item的点击效果
  android:listSeletor = “#000000”/android : listSelector = "@android :color/transparnet"

5.设置ListView需要显示在第几页
  listView.setSelection(N) 其中N是需要显示的第N个item (瞬间完成)

  listView.smoothScrollBy(distance,duration);(平滑移动)
  listView.smoothScrollByOffset(offset);
  listView.smoothScrollToPosition(index)

6.Adapter的notifyDateSetChanged()方法
  在使用该方法时必须保证传进Adapter的数据List是同一个List而不是其他对象,否则将无法实现该效果

7.遍历ListView中所有的Item
  for(int i = 0;i<listView.getChildCount();i++ ){
    View view = listView.getChildAt(i);
  }  

8.处理空ListView
  setEmptyView(),可以设置一个空数据下显示的默认提示

9.ListView的滑动监听
  onTouchListener是View的监听事件
  listView.setOnTouchListener(new View.OnTouchListener(){
    @Override
    public boolean onTouch(View v,MontionEvent event){
      switch(event.getAction()){
        case MotionEvent.ACTION_DOWN:
                //触摸时的操作
                break;
        case MotionEvent.ACTION_MOVE:
                //移动时的操作
                break;
        case MotionEvent.ACTION_UP:
                 //离开时的操作
                 break;
      }
      retuirn false;
    }
  })

  onScrollListener是A表示ListView中的监听事件
  listView.setOnScrollListener(new OnScrollListener(){
      @Override
      public void onScrollStateChanged(AbsListView view,int scrollState){
          switch(scrollState){
              case OnScrollListener.SCROLL_STATE_IDLE:
                      //滑动停止时
                      break;
              case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
                       //正在滑动时
                       break;
              case OnScrollListener.SCROLL_STATE_FLING:
                       //手指抛动时,即手指用力滑动时
                      break;
          }
      }
      @Override
      public void onScroll(AbsListView view,
                                         int firstVisibleItem, //当前看到的第一个Item的Id(从0开始)
                                         int visibleItemCount,//当前看到的Item
                                         int totalItemCount)整个ListView的Item总数
  })

  注意,当前看到的Item的总数包括没有显示完整的Item
  判断是否滚动到最后一行
  if(firstVisibleItem + visibleItemCount = = totalItemCount$$totalItemCount>0){
        //滚动到最后一行
  }
  判断滚动方向(通过lastVisibleItem记录上一次开始Item的Id)
  if(firstVisibleItem >lastVisibleItem){
      //上滑
  }else if(firtVisible<lastVisibleItem){
     //下滑
  }
  firstVisibleItem = lastVisibleItem ;
  获取科可视区域内最后一个Item的Id
  listView.getLastVisiblePosition()

  获取可视区域的第一个Item的Id
 listView.getFirstVisiblePosition();

你可能感兴趣的:(listview 总结)