2017-07-15 59 views
0

我有ErrorEmptyPage.java數據結合 - 通過動態ID獲取資源 - Android電子

public class ErrorEmptyPage { 

    private int iconId; 
    private int messageId; 
    private int actionTextId; 

    public int getIconId() { 
     return iconId; 
    } 

    public void setIconId(int iconId) { 
     this.iconId = iconId; 
    } 

    public int getMessageId() { 
     return messageId; 
    } 

    public void setMessageId(int messageId) { 
     this.messageId = messageId; 
    } 

    public int getActionTextId() { 
     return actionTextId; 
    } 

    public void setActionTextId(int actionTextId) { 
     this.actionTextId = actionTextId; 
    } 

} 

然後我填在我activity

 ErrorEmptyPage errorEmptyPage = new ErrorEmptyPage(); 
     errorEmptyPage.setIconId(iconId); 
     errorEmptyPage.setMessageId(messageId);<=== for example R.string.fetching_data_failed 
     errorEmptyPage.setActionTextId(actionTextId); 
activityStartBinding.contentInstagramEmpty.setMessageEmptyView(errorEmptyPage); 

在我xml我有一個include項目包含波紋管xml

<?xml version="1.0" encoding="utf-8"?> 
<layout xmlns:android="http://schemas.android.com/apk/res/android"> 

    <data> 
     <variable 
      name="messageEmptyView" 
      type="ir.jmostafa.appportalmostafa.start.models.ErrorEmptyPage" /> 
    </data> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:orientation="vertical"> 

     <com.joanzapata.iconify.widget.IconTextView 
      android:id="@+id/empty_view_icon_icontextview" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@{@string/messageEmptyView.iconId}" 
      android:textSize="20sp" /> 

     <TextView 
      android:id="@+id/empty_view_message_textview" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:text="@{@string/messageEmptyView.messageId}" /> 

     <Button 
      android:id="@+id/empty_view_action_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@{@string/messageEmptyView.actionTextId}" 
      android:visibility="gone" /> 

    </LinearLayout> 
</layout> 

然後,我填寫的包括xml項目,如波紋管:

android:text="@{@string/messageEmptyView.messageId}" 

但讓我怒吼錯誤:

enter image description here

回答

1

嘗試以下

<com.joanzapata.iconify.widget.IconTextView 
      android:id="@+id/empty_view_icon_icontextview" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@{String.valueOf(messageEmptyView.iconId)}" 
      android:textSize="20sp" /> 

,你必須輸入以下行..就像下面。

<data> 
     <variable 
      name="messageEmptyView" 
      type="ir.jmostafa.appportalmostafa.start.models.ErrorEmptyPage" /> 

<import type="java.lang.string" /> 
    </data> 

更新回答。

如果你想從String.xml用戶的價值的話,你必須寫像下面,

android:text="@{@string/invitation_invited_by_user(invitation.occasion.user.firstName, invitation.occasion.user.lastName)}" 

和價值String.xml像

<string name="invitation_invited_by_user" formatted="false">%s %s</string> 
+0

對不起。不要工作。 –

+0

你對'iconId'做了同樣的事情,因爲它也是'int',請檢查我更新的答案。 –

+0

我無法從字符串xml中獲取任何值,只能看到數字。 –

0
android:[email protected]{String.valueOf (messageEmptyView.messageId)} 

你messageId是int,您不能將int放入android:text

+0

不要工作,只需獲得ID。 –