android ListView开发问题及方法

来源:互联网 发布:手机触摸屏控制软件 编辑:程序博客网 时间:2024/05/17 22:34

今天工作时,想起一个问题,就是每次遇到的问题可以收集起来,多看几遍,就没问题了,故此,在这里收集自己工作或学习中的问题及其解决方法,现在是listview遇见的问题,后面慢慢添加,有更多的方法和简洁请回复


1.ListView和GridView滑动到顶部和底部时出现的阴影消除方法:

android2.3以前用android:fadingEdge="none"

android2.3以后用setOverScrollMode(View.OVER_SCROLL_NEVER) ,

android:overScrollMode="never"


2.ListView布局更新问题

ListView.requestLayout();


3.ListView Item在垂直方向滑动居中显示

代码如下:

private int  ITEM_HEIGHT=80;private int  mPostion=-1;private int autoScroll=0;Runnable autoRunnable=new Runnable() {@Overridepublic void run() {mListView.smoothScrollBy(autoScroll, 300);}};//listview 滑动监听OnScrollListener mListViewScrollListener=new OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView listview, int scrollState) {mHandler.removeCallbacks(autoRunnable);if(scrollState==0){View cureentView = mNotificationItemAdapter.getConvertView();if(cureentView!=null){int top = cureentView.getTop();autoScroll=top-mPostion;mHandler.postDelayed(autoRunnable, 50);}}}@Overridepublic void onScroll(AbsListView view,int firstVisibleItem, int visibleItemCount,int totalItemCount) {int scrollY = getScrollToY();if (mNotificationItemAdapter != null) {for (int i = 0; i < mNotificationItemAdapter.getCount(); i++) {if (scrollY >= i * ITEM_HEIGHT&& scrollY < (i + 1) * ITEM_HEIGHT- ITEM_HEIGHT / 2) {if (mPostion == i) {// 避免同一个位置不停动画return;}mNotificationItemAdapter.setSelectPostion(i);mPostion = i;break;} else if (scrollY >= i * ITEM_HEIGHT&& scrollY < (i + 1) * ITEM_HEIGHT) {if (mPostion == i + 1) {// 避免同一个位置不停动画return;}mNotificationItemAdapter.setSelectPostion(i + 1);mPostion = i + 1;}}}}};//获取滑动的y位置public int getScrollToY() {View c = mListView.getChildAt(0);if (c == null) {return 0;}int firstVisiblePosition = mListView.getFirstVisiblePosition();int top = c.getTop();int headerHeight = 0;return -top + firstVisiblePosition * c.getHeight() + headerHeight;}


0 0