2016-05-02 5 views
0

Ich habe eine Grafik in der Haupttätigkeit auch ich habe eine Recycler-Sicht in der Haupttätigkeit. Der benutzerdefinierte Adapter wird für die Recycler-Ansicht verwendet. Ich habe ein Kontrollkästchen und wische das Layout im Layout des Listenelements. Im Wischlayout gibt es eine Löschtaste.Wie aktualisiert man eine Ansicht in der Hauptaktivität von einem Adapter?

Ich möchte das Diagramm der Hauptaktivität zurücksetzen, wenn ich das Kontrollkästchen aktiviere oder wenn ich ein Element lösche.

Dafür habe ich eine Methode in der Haupttätigkeit erstellt. Und nannte diese Methode im Adapter onCheckedChangeListener und beim Klicken auf Löschen.

Aber ich bekomme eine Null-Zeiger-Ausnahme auf mBarChart. d. Graph. Ich habe in mBarChart in setUI-Methode instanziiert und dies wird in OnCreate einer Aktivität aufgerufen.

resetMethod

public void resetGraph(Context context) 
{ 

    mBarChart.invalidate(); 

} 

in Adapter:

Context conext; 
    MainActivity mainActivity; 

    mainActivity = new MainActivity(); 

    mainActivity.resetGraph(conext); 

Wie dies zu tun? Bitte helfen Sie .. Vielen Dank ..

+0

Was ist 'notifyDataSetChanged' – Pankaj

+0

, wie und wo soll ich anrufen? @Clairvoyant –

+0

Sie möchten Daten des Adapters aktualisieren? – NarenderNishad

Antwort

1

In Adapter rufen Sie Ihren resetMethod diese Weise

((MainActivity)context).resetGraph(context); 
+0

funktioniert .. Danke .. @ Singh Arjun –

1

Erstellen Sie eine Schnittstelle, die Aktivität, Hauptaktivität in Ihrem Fall implementieren und Methode überschreiben und den Vorgang ausführen.

//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(); 
} 
0

Im Adapter sollten Sie keine neue Instanz von MainActivity erstellen und resetGraph() aufrufen. Sie sollten die Instanz von MainActivity verwenden, die den Adapter erstellt hat. Senden Sie die Instanz von MainActivity an den Adapter new Adapter(this) und speichern Sie sie im Adapter.

0

Sie können eine Ansicht aus dem Kontext eines Adapters wie folgt ändern: Umwandlung von Kontext in Aktivität. Verwenden Sie die Methode findviewbyid, um die gewünschte Ansicht zu finden. initialisieren Sie es zu einer Variablen.

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

Ändern Sie die Variable, wie Sie möchten. Hinweis. Vergessen Sie nicht, den gewünschten Ansichtstyp zu verwenden und die findview-Methode darauf anzuwenden.

Wenn Sie eine Methode aufrufen möchten, müssen Sie den Kontext einfach an MainActivity übergeben und aufrufen.

Verwandte Themen