Android QuickReturnListView快速计算横向定位

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 =

我正在根据我的应用程序调整来自LarsWerkman的列表,但滚动列表的时间太长。我的应用程序显示带有图钉的行,但所有行的大小都相同

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()];}愿上帝与你同在