1

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、常に機能するとは限りません。

4

3 に答える 3

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);
        } 
    });
}
于 2013-04-05T13:42:54.640 に答える
1

scroll_toファイナルにすることができます。メソッドの引数でも機能します。

于 2013-04-05T13:51:05.603 に答える
1

scrlランナブルから値を参照する代わりに、構築時にランナブルにの値を渡すことができます。

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);
    }
}
于 2013-04-05T13:43:24.793 に答える