मुझे पता है कि यह उनके संसाधन आईडी से लेआउट में संसाधनों के संदर्भ के लिए संभव है:डेटा बाइंडिंग: गतिशील आईडी द्वारा संसाधन कैसे प्राप्त करें?
android:text="@{@string/resourceName}"
हालांकि, मैं आईडी जो केवल कार्यावधि में जाना जाता है के द्वारा संसाधन संदर्भ के लिए करना चाहते हैं। एक साधारण उदाहरण के रूप में, कल्पना करें कि हमारे पास ऐसा मॉडल है:
public class MyPOJO {
public final int resourceId = R.string.helloWorld;
}
और अब मुझे इस मान को प्रारूप स्ट्रिंग में मान के रूप में उपयोग करने की आवश्यकता है। इसे कहते हैं
<string name"myFormatString">Value is: %s</string>
सबसे स्पष्ट दृष्टिकोण काम नहीं करता:
android:text="@{@string/myFormatString(myPojo.resourceId)}
प्लेसहोल्डर में यह सिर्फ डाल देंगे पूर्णांक मान (यह भी साबित होता है कि मैं अपने POJO सही तरीके से प्रारंभ, तो मैं प्रदान नहीं कर रहा हूँ यहां पूरा लेआउट)।
मैं भी @BindingConversion
उपयोग करने की कोशिश की, लेकिन यह काम नहीं किया था (जो वास्तव में की उम्मीद है, लेकिन मैं वैसे भी करने की कोशिश की) - int
अभी भी प्लेसहोल्डर को सौंपा गया था और बाध्यकारी विधि आमंत्रित नहीं किया गया।
मैं डेटाबाइंडिंग लाइब्रेरी में अपनी आईडी द्वारा संसाधन को स्पष्ट रूप से कैसे प्राप्त कर सकता हूं?
public class BindingUtils {
public static String string(int resourceId) {
return MyApplication
.getApplication()
.getResources()
.getString(resourceId);
}
}
इसके लिए एक आयात की घोषणा:
मैं तो बस इस बात की पुष्टि करने के लिए कोई रास्ता नहीं यह अभी कोशिश करने के लिए है, - से जोड़ दिया जाएगा दिए गए संसाधन आईडी या आईडी को 'int' के रूप में स्वयं के लिए स्ट्रिंग? –
यह संसाधन आईडी देता है – Robust