2011-11-18 2 views
1

나는 각 바퀴에 단어가있는 4 개의 바퀴 선택 도구가 있습니다. 현재 문제는 각 바퀴가 동일한 단어로 당겨져 아래 코드를 볼 수 있다는 것입니다.Android 휠 어레이 반 작업

제 질문은 누군가 각 바퀴에 단어 배열을 제공하는 데 도움이 될 수 있습니까? 아래 XML에서 각 휠에는 자체 ID가 있지만 자바에서 사용하는 방법을 알아낼 수 없으므로 각 휠마다 고유 한 배열이 있습니다.

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" /> 

답변

3

WheelView의 각 인스턴스에 대해 ArrayWheelAdapter의 다른 인스턴스를 사용합니다. 그렇게하면 각 WheelView에 표시되는 목록을 사용자 정의 할 수 있습니다.

< UPDATE는 >

핵심 라인이 하나입니다 각 WheelView에 표시되는 항목을 지정하는 경우

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

이입니다. WheelView의 각 인스턴스에 대해 ArrayWheelAdapter의 새 인스턴스를 만들지 만 모두 동일한 문자열 값 집합을 포함하며 이는 사용자의 컨트롤에 표시됩니다. 그런 다음 initWheel에 다른 값을 제공

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(R.id.passw_1, new String[] { "Abc", "Foo" }); 
initWheel(R.id.passw_2, new String[] { "Def", "Bar" }); 
+0

답해 주셔서 감사합니다.하지만 구현 방법을 이해하지 못해서 조금 더 자세히 도와 줄 수 있습니까? 감사. – Matt

+0

더 자세한 내용은 원래 대답을 –

+0

추가했습니다. 덕분에 지금은 어떻게 작동 해야하는지 볼 수 있지만 단어 "값"이 오류 "값을 해결할 수"얻을 코드를 변경할 때 볼 수있는 위치를 iniWheel 오류가 발생하지 않고 이동하십시오. – Matt

0

당신이 모든 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;} 
} 

행운을 현재 ID를 전환해야 다른 배열을 원한다면!