数据绑定 - 通过动态ID获取资源 - Android

时间:2017-07-15 05:19:17

标签: android data-binding android-databinding

我有private async void btnDeleteContact_Click(object sender, RoutedEventArgs e) { StorageFile file = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync("Contacts.xml"); XDocument xdoc = XDocument.Load(file.Path); if (lstBox.SelectedIndex != -1) { var id = lstBox.SelectedItem.ToString(); XmlNode node = xdoc.SelectSingleNode(string.Format("/Contacts/Contact[@ID='{0}']", id)); if (node != null) { XmlNode parent = node.ParentNode; parent.RemoveChild(node); updateXMLFile(xdoc); } } }

ErrorEmptyPage.java

然后我填写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

但是让我吼叫错误:

enter image description here

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

 android:text=@{String.valueOf (messageEmptyView.messageId)}

您的messageId为int,您无法将int放入android:text