android - एडेप्टर से मुख्य गतिविधि में एक दृश्य को कैसे ताज़ा करना है?




android-activity view (3)

मेरे पास मुख्य गतिविधि का एक ग्राफ है, मेरे मुख्य गतिविधि में रीसाइक्लर दृश्य भी है। कस्टम एडॉप्टर को रीसाइक्लिव्यू के लिए उपयोग किया जाता है मेरे पास एक चेक बॉक्स और सूची आइटम लेआउट में स्वाइप लेआउट है। स्वाइप लेआउट में एक हटाएं बटन है

जब मैं चेक बॉक्स को चेक करता हूं या जब भी कोई आइटम हटाता हूं, तो मैं मुख्य गतिविधि का आलेख रीसेट करना चाहता हूं।

इसके लिए मैंने मुख्य क्रियाकलाप में एक विधि बनाई। और इस पद्धति को अडैप्टर में चेक-चेंज चेंज लिस्टनर पर और हटाए जाने के क्लिक पर बुलाया।

लेकिन मैं mBarChart पर एक रिक्त सूचक अपवाद प्राप्त कर रहा हूँ अर्थात । ग्राफ। मैंने सेटयूआई विधि में एमब्रार्ट में इन्स्तांत किया है और इसे किसी गतिविधि के क्रिएट में कहा जाता है।

resetMethod

    public void resetGraph(Context context)
{

    mBarChart.invalidate();

}

अनुकूलक में:

  Context conext;
  MainActivity mainActivity;

  mainActivity = new MainActivity();

  mainActivity.resetGraph(conext);

यह कैसे करना है? कृपया मदद .. धन्यवाद ..


आप इस तरह एक एडेप्टर के संदर्भ से एक दृश्य बदल सकते हैं: गतिविधि के लिए कास्ट संदर्भ आप चाहते हैं कि देखने के लिए findviewbyid पद्धति का उपयोग करें। इसे एक चर में घुमाइए।

View v = ((Activity)getContext()).findViewById(WHATEVER_VIEW_COMPONENT_YOU_WANT);

जितना चाहें वैरिएबल बदल दें ध्यान दें। उस दृश्य के प्रकार का उपयोग करने के लिए मत भूलना जिसे आप चाहते हैं और उसमें मिली खोज की विधि डालें।

यदि आप किसी पद्धति को कॉल करना चाहते हैं तो केवल मुख्य गतिविधि को संदर्भित करें और उसे कॉल करें।


एक इंटरफ़ेस बनाएँ जो गतिविधि को क्रियान्वित करता है, आपके मामले में मुख्य गतिविधि और ओवरराइड विधि और कार्य निष्पादित करें।

//Interface

public interface OnRefreshViewListner{

  public void refreshView();

}


//Main Activity
 MainActivity extends Activity implements OnRefreshViewListner
{

  //Other methods

  @Override
  public void refreshView(){

    // write refresh code here

 }

}


//Initialize Interface in adapter constructor

public class YourAdapter extends BaseAdapter {

 private OnRefreshViewListner mRefreshListner;
 public YourAdapter (Context context) {
       mRefreshListner = (OnRefreshViewListner)context; 
    }

    //call MainActivity method
    mRefreshListner.refreshView();
}

एडॉप्टर में, आपको मेनैक्टिविटी का नया इंस्टेंस नहीं बनाएं और रीसेटग्राफ कॉल करें ()। आपको मुख्य गतिविधि के उदाहरण का उपयोग करना चाहिए, जिसने एडेप्टर बनाया। एडएप्टर में मेनएक्टिविटी का उदाहरण दें, new Adapter(this) और एडेप्टर में इसे सहेजें।







adapter