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();