0

我正在使用 Threeten 时区将本地日期存储在 LocalDate 类型的列表中。

这是我的代码:

private List<LocalDate> getWeekDays() {
        ZoneId z = ZoneId.of("Pacific/Auckland");  // Or ZoneId.of( "Africa/Tunis" )
        LocalDate today = LocalDate.now( z ) ;

        LocalDate localDate = today.with( org.threeten.bp.temporal.TemporalAdjusters.previousOrSame( DayOfWeek.SUNDAY ) ) ;
        List< LocalDate > dates = new ArrayList<>( 7 ) ;
        for( int i = 0 ; i < 7 ; i ++ ) {
            localDate = localDate.plusDays( i ) ;
            dates.add( localDate ) ;
        }
            return dates;

    }

问题是在将列表数组传递给回收视图之后。将其提取到回收视图时出现错误。

回收视图代码:

 public void onBindViewHolder(@NonNull HoldViews holder, int position) {

        holder.tx1.setText(WeekDays[position]);
        String[] date = Dates.toArray(new String[0]);// Dates is list array of type LocalDate
       holder.tx3.setText(date[position]);

    }

如果我转换成字符串数组。我收到以下错误“java.lang.ArrayStoreException:org.threeten.bp.LocPlDate 类型的源 [0] 无法存储在 java.lang.String [] 类型的目标数组中”。请帮我。

4

1 回答 1

1

每次绑定新视图时,我建议不要将整个 Dates 数组转换为 Strings 数组,而是LocalDate直接使用给定的position.

然后使用该方法将其转换LocalDate为字符串。toString()

public void onBindViewHolder(@NonNull HoldViews holder, int position) {

    holder.tx1.setText(WeekDays[position]);
    String dateString = dateList.get(position).toString() // I don't know what the variable name you used is
    holder.tx3.setText(dateString);

}
于 2018-10-16T16:56:29.597 回答