我在每个车轮上都有一个带有单词的四轮选择器。目前,我的问题是每个车轮都拉相同的单词,您可以看到下面的代码。

我的问题是,有人可以帮助我给每个轮子提供自己的单词阵列吗?在下面的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中显示的列表。



关键是这一条:

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" } );

10-06 13:52