【问题标题】:How to determine NumberPicker values based on month and year如何根据月份和年份确定 NumberPicker 值
【发布时间】:2019-08-11 09:12:45
【问题描述】:

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

这些值取自这样的数组:

 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 个月(三月)

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

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

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

  • יולי 是第 7 个月(7 月)

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

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

  • אוק 是第 10 个月(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);
}

【问题讨论】:

    标签: android numberpicker android-number-picker


    【解决方案1】:

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

    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());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-25
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 2016-11-23
      相关资源
      最近更新 更多