2016-05-02 5 views
0

私は主な活動の中にグラフを持っています。私は主な活動の中でリサイクルの視点も持っています。カスタムアダプターは、recyclerviewに使用されます。私はリスト項目のレイアウトでチェックボックスとスワイプレイアウトを持っています。スワイプレイアウトには削除ボタンがあります。メインアクティビティのビューをアダプタからリフレッシュするにはどうすればよいですか?

チェックボックスをオンにするか、アイテムを削除すると、メインアクティビティのグラフがリセットされます。

このため、主なアクティビティで1つのメソッドを作成しました。このメソッドは、アダプタのonCheckedChangeListenerおよびdeleteのクリックで呼び出されました。

しかし、mBarChartでnullポインタ例外が発生しています。すなわち、グラフ。私はsetUIメソッドでmBarChartでインスタンス化しました。これはアクティビティのonCreateで呼び出されます。

resetMethod

アダプタで
public void resetGraph(Context context) 
{ 

    mBarChart.invalidate(); 

} 

:これを行うにはどのように

Context conext; 
    MainActivity mainActivity; 

    mainActivity = new MainActivity(); 

    mainActivity.resetGraph(conext); 

?助けてください..ありがとう..

+0

何notifyDataSetChanged' – Pankaj

+0

どこでどのように私が呼び出す必要があります 'についてはどうですか?あなたのresetMethodを呼び出しますか@Clairvoyant –

+0

アダプタのデータを更新したいですか? – NarenderNishad

答えて

1

このよう

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

作品..ありがとうございます。@ Singh Arjun –

1

あなたのケースでアクティビティ、メインアクティビティを実装し、メソッドをオーバーライドして操作を実行するインターフェイスを作成します。

//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

アダプタでは、MainActivityの新しいインスタンスを作成してresetGraph()を呼び出さないでください。アダプタを作成したMainActivityのインスタンスを使用する必要があります。 MainActivityのインスタンスをアダプタnew Adapter(this)に送信し、アダプタに保存します。

0

アダプターのコンテキストからビューを変更することができます。 コンテキストをアクティビティーにキャストします。 findviewbyidメソッドを使用して、必要なビューを検索します。 initiliazeを変数に追加します。

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

必要に応じて変数を変更します。 メモ。必要なビューの種類を使用し、findviewメソッドをそのビューにキャストすることを忘れないでください。

メソッドを呼び出す場合は、コンテキストをMainActivityにキャストして呼び出します。アダプターで

関連する問題