Android轮阵半工作

问题描述 投票:1回答:2

我有一个四轮捡拾器,每个轮子上都有文字,我现在的问题是,每个轮子都拉着相同的单词,你可以看到下面的代码。

我的问题是有人可以帮助我给每个轮子提供自己的单词。在下面的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" />
android arrays string android-wheel
2个回答
3
投票

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

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

祝好运!

© www.soinside.com 2019 - 2024. All rights reserved.