Как отобразить локальный тип даты, используя вид корзины в Android? - PullRequest
0 голосов
/ 16 октября 2018

Я использую часовой пояс 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;

    }

Проблема в том, что после передачи массива списка в перезапущенное представление.Я получаю сообщение об ошибке при загрузке в представление корзины.

Recycle view code:

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

    }

Если хоть я конвертировал в массив String.Я получаю следующую ошибку «java.lang.ArrayStoreException: source [0] типа org.threeten.bp.LocPlDate не может быть сохранен в целевом массиве типа java.lang.String []».Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 16 октября 2018

Вместо того, чтобы преобразовывать весь массив дат в массив строк, КАЖДЫЙ раз, когда привязывается новое представление, я бы предложил напрямую вытянуть объект 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);

}
...