一、设置项目将分割线
<pre name="code" class="html"> android:divider="@android:color/darker_gray"
android:dividerHeight="10dp"
divider不仅可以设置一个颜色,同样可以设置为图片资源。
android:divider="@null"
分割线设置为透明
二、隐藏ListView的滚动条
android:scrollbars="none"
android:listSelector="#00000000"
或
android:listSelector="@android:color/transparent"
四、设置ListView需要显示在第几项
listView.setSelection(N);
ListView默认显示第一个Item,当需要指定具体显示的Item时,可通过以上实现
五、动态修改ListView
mData.add("new data");
mAdapter.notifyDataSetChanged();
当修改了传递给Adapter的映射List之后,只需要通过调用Adapter的notifyDataSetChanged()方法,完成对ListView的动态修改
六、遍历ListView中的所有Item
for (int i = 0;i < mListView.getChildCount(); i++){
View view = mListView.getChildAt(i);
}
listView.setEmptyView(findViewById(R.id.empty_view));
通过以上代码,就给ListView在空数据时显示一张默认图片,用来提示用户;而在有数据时,则不会显示
八、ListView滑动监听
介绍两种监听ListView滑动事件的方法,一个是通过OnTouchListener,另一种是OnScrollListener
(1)、OnTouchListener是View总的监听事件
根据坐标判断用户滑动的方向,并在不同的事件中进行不同的处理
listView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
//触摸时操作
break;
case MotionEvent.ACTION_MOVE:
//移动时操作
break;
case MotionEvent.ACTION_UP:
//离开时操作
break;
}
return false;
}
});
(2)、OnScrollListener是ABSListView中的监听事件
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState){
case SCROLL_STATE_IDLE:
//滑动停止时
break;
case SCROLL_STATE_TOUCH_SCROLL:
//正在滚动
break;
case SCROLL_STATE_FLING:
//手指抛动时 即手指用力滑动
//在离开后 ListView由于惯性继续滑动
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
//滚动时一直调用
}
});
1)、先看一个方法
onScrollStateChanged当用户没有用手指抛动的状态时,这个方法只会调2次,否则会回调3次,差别就是手指抛动这个状态。
2)、OnScroll()这个方法,ListView滚动时会一直回调,三个int参数非常精确地显示了当前ListView滚动的状态
firstVisibleItem:当前能看到的第一个Item的ID(从0开始);
visibleItemCount:当前能看到的Item总数(包括显示一小半的Item);
totalItemCount:整个ListView的Item总数。
if(firstVisibleItem + visibleItemCount == totalItemCount && totalItemCount >0){
//滚动到最后一行
}
判断滚动的方向
if(firstVisibleItem > lastVisibleItemPosition){
//上滑
}else if(firstVisibleItem < lastVisibleItemPosition){
//下滑
}
lastVisibleItemPosition = firstVisibleItem;//通过成员变量记录上次第一个可视的Item的ID
自己在相应的方法中添加Log,对照Log进行分析会很快掌握方法