How to refresh a view in main activity from an adapter?

半城伤御伤魂 提交于 2019-12-02 08:46:37

In Adapter call your resetMethod this way

((MainActivity)context).resetGraph(context);

Create a interface that implement Activity, Main activity in your case and override method and perform operation.

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

In the adapter, you should not create a new instance of MainActivity and call resetGraph(). You should use the instance of MainActivity, that created the adapter. Send the instance of MainActivity to the adapter, new Adapter(this) and save it in adapter.

You can change a view from the context of an adapter like this : cast context to activity. use findviewbyid method to find the view you want. initiliaze it to a variable.

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

change the variable as you want. note. Don't forget to use the type of view that you want and cast the findview method to it.

If you want to call a method just cast the context to MainActivity and call it.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!