1

私は各ホイールに単語が入った4輪ピッカーを持っています。現時点での私の問題は、各ホイールが同じ単語を引っ張っているということです。以下のコードを参照してください。

私の質問は、誰かがそれぞれの車輪に独自の単語の配列を与えるのを手伝ってくれるかどうかです。以下のXMLでは、各ホイールに独自のIDがあることがわかりますが、Javaでそれらを使用する方法がわからないため、各ホイールには独自の特定の配列があります。

private void initWheel(int id) {
WheelView wheel = getWheel(id);
wheel.setViewAdapter(new ArrayWheelAdapter<String>(this, new String[]{"Abc", "Foo", "Bar"}));
wheel.setCurrentItem((int)(Math.random() * 10));
wheel.addChangingListener(changedListener);
wheel.addScrollingListener(scrolledListener);
wheel.setCyclic(true);
wheel.setInterpolator(new AnticipateOvershootInterpolator());
}


 private WheelView getWheel(int id) {
 return (WheelView) findViewById(id);
}

私のXMLは

        <kankan.wheel.widget.WheelView
        android:id="@+id/passw_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

        <kankan.wheel.widget.WheelView
        android:id="@+id/passw_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

       <kankan.wheel.widget.WheelView
        android:id="@+id/passw_3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

       <kankan.wheel.widget.WheelView
        android:id="@+id/passw_4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
4

2 に答える 2

3

ArrayWheelAdapterのインスタンスごとに の異なるインスタンスを使用しますWheelView。そうすれば、それぞれに表示されるリストをカスタマイズできますWheelView

<更新>

重要な行は次のとおりです。

wheel.setViewAdapter(new ArrayWheelAdapter<String>(this, new String[]{"Abc", "Foo", "Bar"}));

ここで、各 に表示されるアイテムを指定しますWheelViewArrayWheelAdapterのインスタンスごとに の新しいインスタンスを作成していますがWheelView、それらにはすべて同じ文字列値のセットが含まれており、これらがWheelViewコントロールに表示されています。

たぶん、次のようなことを試してみてください:

private void initWheel(int id, String[] values) {
WheelView wheel = getWheel(id);
wheel.setViewAdapter(new ArrayWheelAdapter<String>(this, values));
wheel.setCurrentItem((int)(Math.random() * 10));
wheel.addChangingListener(changedListener);
wheel.addScrollingListener(scrolledListener);
wheel.setCyclic(true);
wheel.setInterpolator(new AnticipateOvershootInterpolator());
}

次に、 に異なる値を指定しinitWheelます。

initWheel( R.id.passw_1, new String[] { "Abc", "Foo" } );
initWheel( R.id.passw_2, new String[] { "Def", "Bar" } );
于 2011-11-18T13:03:37.127 に答える
0

WheelViewごとにこれを呼び出します...何が起こると思いますか:)?

wheel.setViewAdapter(new ArrayWheelAdapter<String>(this, new String[]{"Abc", "Foo", "Bar"}));

別の配列が必要な場合は、現在のIDを次のように切り替える必要があります

switch(id){
  case R.id.passw_1: {wheel.setViewAdapter(new ArrayWheelAdapter<String>(this, new String[]{"Abc1", "Foo1", "Bar1"})); break;}
  case R.id.passw_2: {wheel.setViewAdapter(new ArrayWheelAdapter<String>(this, new String[]{"Abc2", "Foo2", "Bar2"})); break;}
  case R.id.passw_3: {wheel.setViewAdapter(new ArrayWheelAdapter<String>(this, new String[]{"Abc3", "Foo3", "Bar3"})); break;}
  case R.id.passw_4: {wheel.setViewAdapter(new ArrayWheelAdapter<String>(this, new String[]{"Abc4", "Foo4", "Bar4"})); break;}
}

幸運を!

于 2011-11-18T13:17:17.277 に答える