我有一个四轮捡拾器,每个轮子上都有文字,我现在的问题是,每个轮子都拉着相同的单词,你可以看到下面的代码。
我的问题是有人可以帮助我给每个轮子提供自己的单词。在下面的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" />
对ArrayWheelAdapter
的每个实例使用不同的WheelView
实例。这样您就可以自定义每个WheelView
中显示的列表。
<UPDATE>
关键是这一个:
wheel.setViewAdapter(new ArrayWheelAdapter<String>(this, new String[]{"Abc", "Foo", "Bar"}));
您可以在此处指定将在每个WheelView
中显示的项目。您正在为ArrayWheelAdapter
的每个实例创建一个新的WheelView
实例,但它们都包含相同的String值集 - 这些是您的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" } );
你为每个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;}
}
祝好运!