Я хотел бы отформатировать дату ГГГГ / ММ / ДД в более удобный режим.
Я использую андроид-привязку данных.
Я ожидаю, что результат будет таким: вторник, 22 августа 2006 г. Мой текущий ввод от Json: «2018-09-27» (строковые данные в модели)
мой код:
public class DateUtils {
SimpleDateFormat fromServer = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat myFormat = new SimpleDateFormat("dddd, dd MMMM yyyy");
public String getDateToFromat (String reciveDate) {
String newFormatString = myFormat.format(fromServer.parse(reciveDate));
return newFormatString;
};
}
мой макет:
<layout xmlns:tools = "http://schemas.android.com/tools"
xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto">
<data class = "CurrencyBindingDetailItem">
<import type = "com.example.htw.currencyconverter.utils.DateUtils"/>
<import type = "android.view.View" />
<variable name = "currencyItemDetailDate" type = "com.example.htw.currencyconverter.model.CurrencyDate"/>
<variable name = "currencyBindingItemDetail" type = "com.example.htw.currencyconverter.model.CurrencyBinding"/>
<variable name = "callback" type = "com.example.htw.currencyconverter.callback.ClickCallback"/>
</data>
<TextView
android:textSize = "28dp"
android:text = "@{DateUtils.getDateToFromat(currencyItemDetailDate.date)}"
android:textColor = "@color/primary_text"
android:id = "@+id/date_text"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_gravity = "center" />
и у меня есть ошибка:
Found data binding errors.
****/ data binding error ****msg:**cannot find method getDateToFromat**(java.lang.String) in class com.example.htw.currencyconverter.utils.DateUtils
Я очистил, перезапустил и перестроил.
Вам понадобятся два объекта DateFormat. Один для форматирования строки, полученной с сервера, а другой - в желаемый формат.
SimpleDateFormat fromServer = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat myFormat = new SimpleDateFormat("dddd, dd MMMM yyyy");
String inputDateStr = "2018-09-27";
Date date = fromServer.parse(inputDateStr);
String outputDateStr =myFormat.format(date);
Почему бы вам не создать адаптер привязки данных, чтобы ваш xml оставался более понятным? Поскольку ваша дата с сервера находится в строковом формате, адаптер будет выглядеть так:
@BindingAdapter("bindServerDate")
public static void bindServerDate(@NonNull TextView textView, String date) {
/*Parse string data and set it in another format for your textView*/
}
Использование этого:
В вашей viewModel создайте ObservableField<String> serverDate и установите значение из вашего ответа, в xml установите app:bindServerDate = "@{viewModel.serverDate}". Не забудьте добавить viewModel как variable и установить его со своего activity/fragment.
Я попробую так, THX!
для лучшего просмотра кода я не оставляю комментарий, а отправляю ответ ниже.