2011-11-18 39 views
0

大家好我有下面的代码产生四个车轮,每个车轮的数字0-9。我认为这些数字正在呼吁的代码之后的部分中的每个轮:Android字符串数组

/** 
* Initializes wheel 
* @param id the wheel widget Id 
*/ 

有没有办法可以改变这个,所以我可以对四个车轮状的每一个动作设定某些词不是数字的和数组或字符串。

所以我会有四个数组(字符串)与每个车轮不同的单词。

在此先感谢。

public class PasswActivity extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.passw_layout); 
    initWheel(R.id.passw_1); 
    initWheel(R.id.passw_2); 
    initWheel(R.id.passw_3); 
    initWheel(R.id.passw_4); 

    Button mix = (Button)findViewById(R.id.btn_mix); 
    mix.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      mixWheel(R.id.passw_1); 
      mixWheel(R.id.passw_2); 
      mixWheel(R.id.passw_3); 
      mixWheel(R.id.passw_4); 
     } 
    }); 


} 

// Wheel scrolled flag 
private boolean wheelScrolled = false; 

// Wheel scrolled listener 
OnWheelScrollListener scrolledListener = new OnWheelScrollListener() { 
    public void onScrollingStarted(WheelView wheel) { 
     wheelScrolled = true; 
    } 
    public void onScrollingFinished(WheelView wheel) { 
     wheelScrolled = false; 

    } 
}; 

// Wheel changed listener 
private OnWheelChangedListener changedListener = new OnWheelChangedListener() { 
    public void onChanged(WheelView wheel, int oldValue, int newValue) { 
     if (!wheelScrolled) { 

     } 
    } 
}; 




/** 
* Initializes wheel 
* @param id the wheel widget Id 
*/ 
private void initWheel(int id) { 
    WheelView wheel = getWheel(id); 
    wheel.setViewAdapter(new NumericWheelAdapter(this, 0, 9)); 
    wheel.setCurrentItem((int)(Math.random() * 10)); 

    wheel.addChangingListener(changedListener); 
    wheel.addScrollingListener(scrolledListener); 
    wheel.setCyclic(true); 
    wheel.setInterpolator(new AnticipateOvershootInterpolator()); 
} 

/** 
* Returns wheel by Id 
* @param id the wheel Id 
* @return the wheel with passed Id 
*/ 
private WheelView getWheel(int id) { 
    return (WheelView) findViewById(id); 
} 

/** 
* Tests entered PIN 
* @param v1 
* @param v2 
* @param v3 
* @param v4 
* @return true 
*/ 
private boolean testPin(int v1, int v2, int v3, int v4) { 
    return testWheelValue(R.id.passw_1, v1) && testWheelValue(R.id.passw_2, v2) && 
     testWheelValue(R.id.passw_3, v3) && testWheelValue(R.id.passw_4, v4); 
} 

/** 
* Tests wheel value 
* @param id the wheel Id 
* @param value the value to test 
* @return true if wheel value is equal to passed value 
*/ 
private boolean testWheelValue(int id, int value) { 
    return getWheel(id).getCurrentItem() == value; 
} 

/** 
* Mixes wheel 
* @param id the wheel id 
*/ 
private void mixWheel(int id) { 
    WheelView wheel = getWheel(id); 
    wheel.scroll(-25 + (int)(Math.random() * 50), 2000); 
} 

}

回答

1

只需使用一个ArrayWheelAdapter<T>代替NumericWheelAdapter

如果您在自己的代码仔细观察,你会发现在其中创建您的适配器

new NumericWheelAdapter(this, 0, 9) 

适配器是东西轮UI可以钩住,抓住数据显示线。这将创建一个包含数字0到9的适配器。要创建一个显示单词“Abc”,“Foo”和“Bar”的适配器,请使用它。

new ArrayWheelAdapter<String>(this, new String[]{"Abc", "Foo", "Bar"}) 
+0

感谢您的回答,但我真的不明白如何实现,使四个不同的数组。你能帮我多出一点吗?我是否必须将四个不同的数组添加到ArrayWheelAdapter文件中,如果是的话,我将如何将它们放入此Java文件中。谢谢。 – Matt

+0

对不起是一个痛苦,但我对android开发很新,你可以展开你的答案也许显示我一个小代码? – Matt

+0

@Matt我加了一个关于如何做到这一点的例子。希望能帮助到你! – vidstige