Android Wheel Array Half Working - PullRequest
       17

Android Wheel Array Half Working

1 голос
/ 18 ноября 2011

У меня есть четырехколесный сборщик со словами в каждом колесе, и моя проблема на данный момент в том, что каждое колесо тянет те же слова, что и код ниже.

Мой вопрос: может ли кто-нибудь помочь мне вдавая каждому колесу свои массивы слов.В приведенном ниже XML-коде вы можете видеть, что у каждого колеса есть свой собственный идентификатор, но я не могу понять, как использовать их в 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" />

Ответы [ 2 ]

3 голосов
/ 18 ноября 2011

Используйте разные экземпляры 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" } );
0 голосов
/ 18 ноября 2011

вы называете это для каждого WheelView ... Что вы ожидаете, что произойдет :)?

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

если вы хотите разные массивы, вы должны переключить текущий идентификатор как

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

удачи!

...