1、设置viewHolder
2、item之间分割线
android:divider="@color/colorAccent"
android:dividerHeight="2dp"
3、去掉分割线
android:divider="@null"
把分割线设置为透明
4、隐藏滚动条
android:scrollbars="none"
5、取消item的点击效果
android:listSelector="#00000000"
6、显示指定的item
listView.setSelection(1);
以上是没有任何过渡直接完成
平滑过渡如下:
listView.smoothScrollByOffset(3);
listView.smoothScrollToPosition(2);
listView.smoothScrollBy(2,1);
7、遍历listview中所有子view
for (int i=0;i<listView.getChildCount();i++){
View view=listView.getChildAt(i);
}
8、处理空listview
listView = findViewById(R.id.my_list_view);
listView.setEmptyView(findViewById(R.id.empty_view));
9、listview的滑动监听
A:触摸监听
listView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()){
case MotionEvent.ACTION_DOWN://触摸时触发
break;
case MotionEvent.ACTION_MOVE://移动时触发
break;
case MotionEvent.ACTION_UP://离开时触发
break;
}
return false;
}
});
B:滑动监听
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView absListView, int scrollState) {
switch (scrollState){
case SCROLL_STATE_TOUCH_SCROLL: // 手指接触状态
break;
case SCROLL_STATE_IDLE: //滑动停止
break;
case SCROLL_STATE_FLING: //屏幕处于滑动状态
break;
}
// scrollState = SCROLL_STATE_TOUCH_SCROLL(1):表示正在滚动。当屏幕滚动且用户使用的触碰或手指还在屏幕上时为1
// scrollState =SCROLL_STATE_FLING(2) :表示手指做了抛的动作(手指离开屏幕前,用力滑了一下,屏幕产生惯性滑动)。
// crollState =SCROLL_STATE_IDLE(0) :表示屏幕已停止。屏幕停止滚动时为0。
}
//监听屏幕滑动,并记录当前页面item显示情况
@Override
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
//1、 firstVisibleItem:当前窗口中能看见的第一个列表项ID(从0开始)关于这个参数的详细理解可参考这里
//2、 visibleItemCount:当前窗口中能看见的列表项的个数(小半个也算)
//3、 totalItemCount:列表项的总数
}
});
获取可视区域内最后一个和第一个item的id
listView.getLastVisiblePosition();
listView.getFirstVisiblePosition();