没有最终参数的函数,包括Runnable()

时间:2013-04-05 13:40:59

标签: java android

如何创建没有final参数的函数,包括Runnable()?

 public void scroll(int scroll_to) {
        final HorizontalScrollView scrl = (HorizontalScrollView)findViewById(R.id.horizontalScrollView1);
        scrl.post(new Runnable() { 
            public void run() { 
                 scrl.scrollTo(0, scroll_to);
            } 
        });
    }

但这不能引用非最终scroll_to变量。如何做滚动的通用功能?没有Runnable,它并不总是有效。

3 个答案:

答案 0 :(得分:5)

这个怎么样?

public void scroll(int scroll_to)
{
    final int x = scroll_to;
    final HorizontalScrollView scrl = (HorizontalScrollView)findViewById(R.id.horizontalScrollView1);
    scrl.post(new Runnable()
    {
        public void run()
        {
            scrl.scrollTo(0, x);
        } 
    });
}

答案 1 :(得分:1)

您可以在构建期间将scrl的值传递给runnable,而不是从runnable中引用它。

protected class MyRunnable implements Runnable {
    protected HorizontalScrollView scrl;

    public SetStatusIconRunnable( HorizontalScrollView scrl, int scrollTo ) {
        mScrl = val;
                    mScrollTo = scrollTo;
    }

    @Override
    public void run() {
        mScrl.scrollTo(0, mScrollTo);
    }
}

答案 2 :(得分:1)

您可以scroll_to进行最终决定。它也适用于方法参数。