notifydatasetchanged() is not updating the recycler view
<p>i am trying to update recyclerview with images from a API using ASYNC task but its not working properly . The problem is with the <code>notifyDataSetChanged()</code> method in the <code>onPostExecute()</code> of the ASYNC task. i have checked the json response and the result of the <code>onPostExecute()</code> the value are correct but the <code>notifydatasetchanged()</code> is not updating the adapter with the new data.</p>

<p>MainActivity :</p>

<pre><code>public class MainActivity extends AppCompatActivity {

    public static final String LOG_TAG = MainActivity.class.getName();
    public MovieUtils utils = new MovieUtils();


    private RecyclerView mRecyclerView;
    private MovieAdapter mAdapter;
    private RecyclerView.LayoutManager mLayoutManager;
    public ArrayList&lt;String&gt; movieData=new ArrayList&lt;String&gt;();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
        mRecyclerView.setHasFixedSize(true);
        //Using a grid layout manager to display the movies in a grid view.
        mLayoutManager = new GridLayoutManager(getApplicationContext(), 2);
        mRecyclerView.setLayoutManager(mLayoutManager);
        //using the jsonParser to parse the String response and create a new data set.
        // passing the data to the Adapter.
        mAdapter = new MovieAdapter(movieData, getApplicationContext());
        mRecyclerView.setAdapter(mAdapter);
        DownloadMovieDetail downloadMovieDetail= new DownloadMovieDetail();
        downloadMovieDetail.execute();

    }

    private class DownloadMovieDetail extends AsyncTask&lt;String, Void, ArrayList&lt;String&gt;&gt; {

        @Override
        protected ArrayList&lt;String&gt; doInBackground(String... params) {
            ArrayList&lt;String&gt; movieDb = new ArrayList&lt;String&gt;();
            try {
                movieDb = utils.downloadMovie(responseString);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return movieDb;
        }

        @Override
        protected void onPostExecute(ArrayList&lt;String&gt; strings) {
            movieData.addAll(strings);
            Log.v(LOG_TAG,"the movie data"+movieData.toString());
            mAdapter.notifyDataSetChanged();
        }
    }
}
</code></pre>

<p>Movie Adapter:</p>

<pre><code>public class MovieAdapter extends       RecyclerView.Adapter&lt;MovieAdapter.ViewHolder&gt; {
    public static final String LOG_TAG = MovieAdapter.class.getName();

    public ArrayList&lt;String&gt; dummyData;
    public Context context;

    public static class ViewHolder extends RecyclerView.ViewHolder {
        public ImageView MovieImageView;
        public ViewHolder(View itemView) {
            super(itemView);
            MovieImageView=(ImageView) itemView.findViewById(R.id.movie_image);
        }
    }

    //Constructor for the adapter.
    public MovieAdapter(ArrayList&lt;String&gt; data, Context c){
        this.context=c;
        dummyData=data;
    }


    @Override
    public MovieAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.movie_view, parent, false);
        return new ViewHolder(v);
    }

    @Override
    public void onBindViewHolder(MovieAdapter.ViewHolder holder, int position) {
        Picasso.with(context).load(dummyData.toString()).into(holder.MovieImageView);

    }

    @Override
    public int getItemCount()
    {
        return dummyData.size();
    }
}
</code></pre>