2015-12-15 9 views
9

मैं एंड्रॉइड के डेटा बाइंडिंग लाइब्रेरी का उपयोग कर रहा हूं। मेरे पास BaseObservable का विस्तार करने वाला मेरा डेटा ऑब्जेक्ट है।एंड्रॉइड: डाटाबेसिंग, सूचित करेंप्रॉपर्टी चेंज() काम नहीं कर रहा है?

public static class SimpleData extends BaseObservable implements Serializable { 
    private String text, subText; 
    private SpannableString totalText; 
@Bindable 
    public SpannableString getTotalText() { 
     return totalText; 
    } 

    public void setTotalText(SpannableString totalText) { 
     this.totalText = totalText; 
     notifyPropertyChanged(BR.totalText); 
    } 
} 

और मेरे एक्सएमएल

<TextView 
       android:id="@+id/patient_name" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:layout_marginLeft="16dp" 
       android:layout_toRightOf="@+id/patient_image" 
       android:textColor="@color/primary_text" 
       android:text="@{object.getTotalText()}" 
       /> 

बाध्यकारी प्रारंभिक मान के लिए जगह लेता है के रूप में अच्छी तरह से आबद्ध है। लेकिन जब मैं

object.setTotalText(someSpannableString); 

का उपयोग करके मान बदलता है तो टेक्स्ट दृश्य में परिवर्तन दिखाई नहीं देते हैं। क्या समस्या हो सकती है?

+0

क्या आप अपनी समस्या का समाधान कर सकते हैं सर? –

+0

@mahdipishguy: नहीं सर। समस्या अभी तक हल नहीं हुई है – Ashwin

उत्तर

6

गेटर के क्षेत्र का नाम इंटीड का उपयोग करना।

<TextView 
       android:id="@+id/patient_name" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:layout_marginLeft="16dp" 
       android:layout_toRightOf="@+id/patient_image" 
       android:textColor="@color/primary_text" 
       android:text="@{object.totalText}"/> 
+0

गलत लगता है, आपको फ़ील्ड _AND_ की पहचान करने के लिए 'BR' कक्षा का उपयोग करना चाहिए, '@ बाइंडेबल' के साथ एनटरेटेड दोनों सेटटर और गेटर – LambergaR

1

मुझे बस एक ही समस्या थी। मेरा बाध्यकारी पहली बार काम करेगा और फिर दूसरी बार काम नहीं करेगा।

मेरे पास आपके लिए एक समान सेटअप था, सिवाय इसके कि मैंने अपने सेटटर पर @Bindable रखा था और मेरी गेटर विधि नहीं थी।

मेरे सेटटर और गेटटर दोनों को @Bindable जोड़ना मेरे लिए इस समस्या को हल करता है।

जब मैं डेटा बाइंडिंग पुस्तकालय के भीतर श्रमिकों डिबग मैं देखा है कि एक विधि कहा जाता अनुरोध फिर से बाँध बुलाया जा रहा नहीं गया था क्योंकि यह से अगर क्षेत्र अद्यतन किया गया था जांच करने के लिए एक ऑपरेशन किया था या नहीं अंतिम मूल्य मेरा अनुमान है कि आपको विधियों दोनों पर एनोटेशन की आवश्यकता है ताकि यह जांचने के लिए यह आंतरिक पुष्टि कर सके कि को फिर से बांधने की आवश्यकता है या नहीं।

यदि यह सच है या नहीं, तो मैं 100% नहीं हूं, लेकिन दोनों तरीकों पर एनोटेशन होने से मेरी समस्या ठीक हो गई है। डेटा बाइंडिंग लाइब्रेरी प्रलेखन को देखते हुए मुझे लगता है कि वे केवल गेटर पर एनोटेशन दिखाते हैं।

आप कोशिश कर सकते हैं:

@Bindable 
public SpannableString getTotalText() { 
    return totalText; 
} 

@Bindable 
public void setTotalText(SpannableString totalText) { 
    this.totalText = totalText; 
    notifyPropertyChanged(BR.totalText); 
} 

देखें कि क्या यह यह हल करता है।

संबंधित मुद्दे