0

私のプログラムでは、次のような2セットのホイールを使用したいと思います。

hours = (WheelView) findViewById(R.id.hour);
NumericWheelAdapter hourAdapter = new NumericWheelAdapter(this, 0, 23, "%02d");
hourAdapter.setItemResource(R.layout.wheel_text_item);
hourAdapter.setItemTextResource(R.id.text);
hours.setViewAdapter(hourAdapter);
hours.setCyclic(true);

これらのホイールにはスクロールリスナーがありますhours.addScrollingListener(scrolledListener);

scrollinglistenerは次のようになります。

// Wheel scrolled listener
OnWheelScrollListener scrolledListener = new OnWheelScrollListener() {
    public void onScrollingStarted(WheelView wheel) {
    }
    public void onScrollingFinished(WheelView wheel) {
    update();
    }
};

一方のホイールをもう一方のホイールの値で設定したいのですが、2つのリスナーをインスタンス化して最初のリスナーをスクロールすると、ホイール1、ホイール2、ホイール1の順に設定されます。

2つのscrolledListenerの1つを無効にすることは可能ですか?

私はこれを試しました:

    hours.addScrollingListener(null);
    hours.setEnabled(false);

しかし、これによりエラーが発生し、プログラムを停止する必要がありました。

ご協力いただきありがとうございます!

PS:ホイールは* AndroidWheelControlからのものです。* https://code.google.com/p/android-wheel/

4

2 に答える 2

0

そのサウンドから、両方のOnWheelScrollListenerを同じWheelViewリスナーリストに追加します。このリストには、動作を説明するすべてのリスナーがコールバックされます。リスナーはこれと同様の方法で追加する必要があります...

hours = (WheelView) findViewById(R.id.hour);
        hours.addScrollingListener(new OnWheelScrollListener() {
            public void onScrollingStarted(WheelView wheel) {
            }
            public void onScrollingFinished(WheelView wheel) {
            update();
            }
        });

        hours2 = (WheelView) findViewById(R.id.hour2);
        hours2.addScrollingListener(new OnWheelScrollListener() {
            public void onScrollingStarted(WheelView wheel) {
            }
            public void onScrollingFinished(WheelView wheel) {
            update();
            }
        });

また、removeScrollingListener(OnWheelScrollListener)メソッドを使用してリスナーを削除したい...hours.addScrollingListener(null);リストにnullアイテムを追加しているだけで、NullPointerExceptionが発生していると思われます。

編集

    OnWheelScrollListener listener = new OnWheelScrollListener() {
                public void onScrollingStarted(WheelView wheel) {
                }
                public void onScrollingFinished(WheelView wheel) {
                if (wheel.getId() == R.id.hour) {
    //do wheel 1 logic
    } else if (wheel.getId() == R.id.hour2) {
    //do wheel 2 logic
    }
            };

hours.addScrollingListener(listener);
hours2.addScrollingListener(listener);
于 2011-04-20T17:03:58.973 に答える
0

私が使用しているホイールの設計者であるYuriに連絡したところ、彼は次の解決策を教えてくれました。

// Wheel scrolled listener
OnWheelScrollListener scrolledListener = new OnWheelScrollListener() {
    boolean syncInProgress = false;

    public void onScrollingStarted(WheelView wheel) {
    }
    public void onScrollingFinished(WheelView wheel) {

        if (syncInProgress) {
            syncInProgress = false;
            return;
        }

        syncInProgress = true;
        if (wheel.getId() == R.id.wheel1) {
            // do something
        } else if (wheel.getId() == R.id.wheel2) {
            // do something else
        }
    }
};

よろしくお願いします!

于 2011-05-01T10:54:47.063 に答える