2016-05-04 9 views
7

मैं रियलम और रीसाइक्लिंगव्यू सीख रहा हूं। मैंने सरल ऐप बनाया जहां आप आइटम जोड़ सकते हैं और उन्हें हटा सकते हैं। जब तक मैं एक-एक करके आइटम को हटाना शुरू नहीं करता तब तक सब कुछ ठीक काम कर रहा है। बहुत पिछले आइटम जब मैं हटाएं पर क्लिक करें पर यह मेरे अपवादjava.lang.IleglegalStateException: ऑब्जेक्ट अब Realm द्वारा प्रबंधित नहीं किया जाता है। क्या इसे हटा दिया गया है?

java.lang.IllegalStateException: Object is no longer managed by Realm. Has it been deleted? 

देना यह मेरा कोड

@Override 
    public void onDeleteClick(int position) { 
     mRealm.beginTransaction(); 
     mResult.get(position).deleteFromRealm(); 
     mRealm.commitTransaction(); 
     adapter.notifyItemRemoved(position); 
    } 

यहाँ पूर्ण ढेर मदद के लिए ईसाई मेल्चिओर को

java.lang.IllegalStateException: Object is no longer managed by Realm. Has it been deleted? 
                      at io.realm.internal.InvalidRow.getStubException(InvalidRow.java:192) 
                      at io.realm.internal.InvalidRow.getString(InvalidRow.java:88) 
                      at io.realm.PersonsRealmProxy.realmGet$firstName(PersonsRealmProxy.java:67) 
                      at techiespk.realmpractice.Persons.getFirstName(Persons.java:22) 
                      at techiespk.realmpractice.MyListAdapter.onBindViewHolder(MyListAdapter.java:44) 
                      at techiespk.realmpractice.MyListAdapter.onBindViewHolder(MyListAdapter.java:15) 
                      at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5471) 
                      at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:5504) 
                      at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4741) 
                      at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4617) 
                      at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1994) 
                      at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1390) 
                      at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1353) 
                      at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:574) 
                      at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3028) 
                      at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2906) 
                      at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3283) 
+2

आप जाहिरा तौर पर 'firstName' पढ़ने के लिए के बाद वस्तु नष्ट कर दिया गया कोशिश कर रहे हैं। एक समाधान आपके 'onBindViewHolder' विधि में 'obj.isValid()' का उपयोग करना होगा और ऐसा होने पर "हटाए गए" स्थिति का उपयोग करना होगा। –

उत्तर

7

ठीक धन्यवाद है। मैं इस

करके मेरी कोड तय

@Override 
    public void onBindViewHolder(MyListViewHolder holder, int position) { 
      Persons p = persons.get(position); 
      holder.firstName.setText(p.getFirstName()); 
      holder.lastName.setText(p.getLastName()); 
    } 

इससे पहले के बाद

@Override 
    public void onBindViewHolder(MyListViewHolder holder, int position) { 

     if (persons.get(position).isValid()) { 
      Persons p = persons.get(position); 
      holder.firstName.setText(p.getFirstName()); 
      holder.lastName.setText(p.getLastName()); 
     } 
    } 
संबंधित मुद्दे

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