以下是读Android群英传的第四章自我小结
4.1.2listview分割线
divider设置listview中的分割线
dividerHeight设置分割线的高度
4.1.3隐藏Listview的滚动条
android:scrollbars=”none”
4.1.4取消Listview的item点击效果
android:listSelector=”#00000000”
或android:listSelector=”@android:color/transparent”
4.1.5设置ListView需要显示在第几项
listview.setSelection(N); // 这个操作是瞬间完成的(其中N是从0开始的)
或者 listview.smoothScrollBy(distance,duration); distance 代表移动的距离
duration 代表移动这段距离的时间 listview.smoothScrollByOffset(offset); //
会使你指定的位置显示在最上面 listview.smoothScrollToPosition(index) //
会使你指定的位置显示在最下面俩者的区别: 第一种没有平滑移动的效果。
4.1.6 如何动态修改ListView中的数据
先修改传递给Adapter的映射List,然后通过Adapter.notifyDataSetChange();
4.1.7如何遍历Listview中的所有item
通过Listview的getchildAt(position)方法
4.1.8处理ListView为空
我们可以通过ListView的setEmptyView(View view)方法设置一个view。
这样当Listview为空时就会显示这个View
4.1.9ListView滑动监听
主要有俩种方式:
1.通过OnTouchListener监听
mListView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
2.通过OnScrollListener监听
OnScrollListener中有俩个回调方法onScrollStateChaged()和onScroll
mListView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:
// 滑动停止
System.out.println("SCROLL_STATE_IDLE");
break;
case SCROLL_STATE_TOUCH_SCROLL:
// 正在滚动
System.out.println("SCROLL_STATE_TOUCH_SCROLL");
break;
case SCROLL_STATE_FLING:
// 手指抛动时 即手指用力滑动
// 在离开后ListView由于惯性继续滑动
System.out.println("SCROLL_STATE_FLING");
break;
default:
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
System.out.println(firstVisibleItem);
System.out.println(visibleItemCount);
System.out.println(totalItemCount);
if ((firstVisibleItem + visibleItemCount) == totalItemCount) {
if(mToast == null)
mToast = Toast.makeText(MainActivity.this, "到最后了!!!", Toast.LENGTH_SHORT);
//mToast.cancel();
mToast.show();
}
}
});
ListView还给我们提供了getLastVisiblePositon和getFirstVisiblePosition来获取第一个可见位置和最后一个可见的位置
4.2.1创造有弹性的ListView
方法:通过覆写ListView中的overScrollBy方法,在调用父类方法中设置maxOverScrollY的值
例:
@Override
protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, 50, isTouchEvent);
}
4.2.2 自动显示、隐藏布局的ListView
主要是通过OnTouchListener来实现对手势的判断,然后进行你想要隐藏和显示的属性动画操作
4.2.3 实现聊天的ListView
主要是通过重写Adapter的getItemViewType和getViewTypeCount来实现逻辑
4.2.4 动态改变ListView布局
需要记住Adapter中getView只是在初始化的时候会调用,但是我们可以通过Adapter的notifyDataSetChanged()方法重新调用getView