如何根据月份和年份确定NumberPicker值

时间:2019-03-20 15:42:49

标签: android numberpicker android-number-picker

在我的应用中,我使用NumberPicker和希伯来语中的值,它看起来像这样:

enter image description here

这些值是从这样的数组中获取的:

 String times[] = {"ינו'-18", "פבר'-18", "מרץ-18", "אפר'-18", "מאי-18", "יוני-18", "יולי-18"
        , "אוג'-18", "ספט'-18", "אוק'-18", "נוב'-18", "דצמ'-18", "ינו'-19", "פבר'-19", "מרץ-19", "אפר'-19", "מאי-19", "יוני-19", "יולי-19"
        , "אוג'-19", "ספט'-19", "אוק'-19", "נוב'-19",};

数组中的希伯来语值对应于这样的月份:

  • ינו'是一年中的第一个月(一月)

  • פבר'是第二个月(二月)

  • מרץ'是第3个月(3月)

  • אפר是第4个月(4月)

  • מאי是第5个月(5月)

  • יוני是第6个月(六月)

  • יולי是7月7日

  • אוג是第8个月(八月)

  • ספט是第9个月(9月)

  • אוק是第10个月(十月)

  • נוב是11月(11月)

  • דצמ是12月(十二月)

我想设置数组值,使其从当前月份开始(例如,如果我们在2021年6月,则第一个值将是יוני-2021),并将包括明年的所有月份

起初,我想将数组保存在具有大量值的远程数据库/本地中,但是我意识到这只是一个糟糕的解决方案,因为我将需要不断更改数组中的值。

我怎么知道我需要根据当前月份和年份将什么值(将希伯来语和年份结合在一起)?

以下是一些其他信息-:这是我用来设置numberpicker值的方法:

private void setNumberPicker(NumberPicker nubmerPicker, String[] numbers) {
    nubmerPicker.setMaxValue(numbers.length - 1);
    nubmerPicker.setMinValue(0);
    nubmerPicker.setWrapSelectorWheel(true);
    nubmerPicker.setDisplayedValues(numbers);
}

1 个答案:

答案 0 :(得分:0)

最后,我找到了一个使用自己制作的自定义类的解决方案:

public class YearAndMontsForNumberPicker {
private String[] demoArray = {"ינו'-xx", "פבר'-xx", "מרץ-xx", "אפר'-xx", "מאי-xx", "יוני-xx", "יולי-xx"
        , "אוג'-xx", "ספט'-xx", "אוק'-xx", "נוב'-xx", "דצמ'-xx" , "ינו'-xx", "פבר'-xx", "מרץ-xx", "אפר'-xx", "מאי-xx", "יוני-xx", "יולי-xx"
        , "אוג'-xx", "ספט'-xx", "אוק'-xx", "נוב'-xx", "דצמ'-xx"};

private Calendar c = Calendar.getInstance();  //get the proper replacements for the demo array
private int currentMonth = c.get(Calendar.MONTH);
private String currentYear = (c.get(Calendar.YEAR) + "").substring(2);
private String[] finalArray;


//sets the array that will be later use with numberPicker
public String[] setArrayForCurrentYear() {

    finalArray = Arrays.copyOfRange(demoArray, currentMonth, demoArray.length);

    changeArrayxx(finalArray,currentYear,0,12-currentMonth); //replace the first part with current year
    changeArrayxx(finalArray, (Integer.valueOf(currentYear)+1)+"",12-currentMonth,finalArray.length); //replace the end of the array with the next year

    return finalArray;
}

private void changeArrayxx(String [] array,String currentyear,int iterator,int condition){
    for (int i = iterator; i < condition; i++) { // chang the xx in the array with the last 2 digits
        array[i] = array[i].replace("xx", currentyear);
        }
    }
}

现在所有要做的事情就是这样获得该类的实例:

new YearAndMontsForNumberPicker().setArrayForCurrentYear()

对于我来说,我在setNumberPicker方法中调用了此方法(检查问题):

setNubmerPicker(currentYearNumberPicker, new YearAndMontsForNumberPicker().setArrayForCurrentYear());