htw*_*tw 1 android android-studio android-databinding
我想将我的日期 YYYY/MM/DD 格式化为更友好的模式。
我使用android-databinding。
我期望的输出应该是示例:2006 年 8 月 22 日,星期二。我当前从 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;
   };
}
Run Code Online (Sandbox Code Playgroud)
我的布局:
<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" />
Run Code Online (Sandbox Code Playgroud)
我确实有错误:
Found data binding errors.
****/ data binding error ****msg:**cannot find method getDateToFromat**(java.lang.String) in class com.example.htw.currencyconverter.utils.DateUtils
Run Code Online (Sandbox Code Playgroud)
我确实清理并重新启动和重建。
你为什么不创建一个数据绑定适配器,让你的 xml 保持更清晰?由于您来自服务器的日期是字符串格式,因此适配器将如下所示:
@BindingAdapter("bindServerDate")
public static void bindServerDate(@NonNull TextView textView, String date) {
    /*Parse string data and set it in another format for your textView*/
}
Run Code Online (Sandbox Code Playgroud)
它的用法:
在您的 viewModel 中ObservableField<String> serverDate,从您的响应中创建并设置值,在 xml set 中app:bindServerDate="@{viewModel.serverDate}"。不要忘记添加viewModel为variable并从您的activity/fragment
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           4452 次  |  
        
|   最近记录:  |