Android QuickReturnListView快速计算横向定位
我正在根据我的应用程序调整来自LarsWerkman的列表,但滚动列表的时间太长。我的应用程序显示带有图钉的行,但所有行的大小都相同Android QuickReturnListView快速计算横向定位,android,listview,scroll,Android,Listview,Scroll,我正在根据我的应用程序调整来自LarsWerkman的列表,但滚动列表的时间太长。我的应用程序显示带有图钉的行,但所有行的大小都相同 public void computeScrollY() { mHeight = 0; mItemCount = getAdapter().getCount(); mItemOffsetY.clear(); for (int i=0;i<mItemCount;++i) { View view =
public void computeScrollY() {
mHeight = 0;
mItemCount = getAdapter().getCount();
mItemOffsetY.clear();
for (int i=0;i<mItemCount;++i)
{
View view = getAdapter().getView(i, null, this);
view.measure(
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
mItemOffsetY.add(i, mHeight);
mHeight += view.getMeasuredHeight();
}
scrollIsComputed = true;
}
public void computescroly(){
mHeight=0;
mItemCount=getAdapter().getCount();
mitemofsety.clear();
对于(int i=0;i如果您的代码是这样工作的,并且您的底线大小相同,那么您可以使用以下代码加快执行速度:
public void computeScrollY() {
mHeight = 0;
mItemCount = getAdapter().getCount();
mItemOffsetY.clear();
if(mItemCount>0) {
View view = getAdapter().getView(0, null, this);
view.measure(
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
int h = view.getMeasuredHeight();
for(int i=0; i<mItemCount;i++) {
mItemOffsetY.add(i, mHeight);
mHeight += h;
}
}
scrollIsComputed = true;
}
public void computescroly(){
mHeight=0;
mItemCount=getAdapter().getCount();
mitemofsety.clear();
如果(mItemCount>0){
View=getAdapter().getView(0,null,this);
看法(
MeasureSpec.makeMeasureSpec(0,MeasureSpec.unspect);
MeasureSpec.makeMeasureSpec(0,MeasureSpec.unspect));
int h=view.getMeasuredHeight();
对于(int i=0;i如果您的代码是这样工作的,并且您的底线大小相同,那么您可以使用以下代码加快执行速度:
public void computeScrollY() {
mHeight = 0;
mItemCount = getAdapter().getCount();
mItemOffsetY.clear();
if(mItemCount>0) {
View view = getAdapter().getView(0, null, this);
view.measure(
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
int h = view.getMeasuredHeight();
for(int i=0; i<mItemCount;i++) {
mItemOffsetY.add(i, mHeight);
mHeight += h;
}
}
scrollIsComputed = true;
}
public void computescroly(){
mHeight=0;
mItemCount=getAdapter().getCount();
mitemofsety.clear();
如果(mItemCount>0){
View=getAdapter().getView(0,null,this);
看法(
MeasureSpec.makeMeasureSpec(0,MeasureSpec.unspect);
MeasureSpec.makeMeasureSpec(0,MeasureSpec.unspect));
int h=view.getMeasuredHeight();
对于(int i=0;谢谢你,我已经尝试过了,我认为它不起作用,但最终我没有考虑到列表标题的高度不同这一事实!!你使用的是arraylist吗?此代码与库不同。你能分享吗?我有如果(mitemoffety==null | | mitemoffety.length!=mItemCount){mitemoffety=new int[getAdapter().getCount()];}愿上帝与你同在谢谢,我已经尝试过了,我认为它不起作用,但最终我没有考虑到列表标题的高度不同这一事实!!你使用的是arraylist吗?此代码与库不同。你能分享吗?我有如果(mitemoffety==null | | mitemoffety.length!=mItemCount){mitemoffety=new int[getAdapter().getCount()];}愿上帝与你同在