2011-11-18 36 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