最近一直在做项目的优化,发现好多问题,感觉有些力不从心。今天优化一个含有列表的专题页,专题页列表的item每项高度是不确定的,因为每项的内容都是根据服务器返回的json数据而组织的,数据不同item呈现的内容也不同。在页面的右下角有一个返回顶部的按钮,当用户垂直方向滑动listview超过屏幕高度时显示,小于屏幕高度时隐藏,监听listview垂直滚动距离的核心代码如下:
private int mItemCount;
private ArrayList<Integer> mItemsHeigh = new ArrayList<Integer>();
public void computeScrollY() {
mItemCount = getAdapter().
getCount();
for (int i = 0; i < mItemCount; ++i) {
if(mItemsHeight.size() <= i || mItemsHeight.get(i) == null){
View view = getAdapter().getView(i, null, this);
view.measure(
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
mItemsHeight.add(i, Integer.valueOf(view.getMeasuredHeight()));
}
}
}
public int getComputedScrollY() {
int pos, nScrollY, nItemY;
View view = null;
pos = getFirstVisiblePosition();
view = getChildAt(0);
nItemY = view.getTop();