title: Change DataSet on RecyclerView item click
body: <p>I am working on a project in which I need to change data of recyclerView after recyclerView item is clicked. I have tried setOnClickListener in onBindViewHolder method:</p>
  
  <pre><code>public class MyAdapter extends RecyclerView.Adapter&lt;MyAdapter.ViewHolder&gt; {
      private List&lt;Dataset&gt; mDataset = Collections.emptyList();
      private static Context sContext;
      private SharedPreferences sharedPrefs;
  
      // Create new views (invoked by layout manager)
      @Override
      public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  
          View v = null;
  
          sharedPrefs = Functions.getShPreferences(parent.getContext(), "selected_view");
          viewType = sharedPrefs.getInt("selected_view", 0);
          switch (viewType) {
              case 0:
                  v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_view, parent, false);
                  break;
              case 1:
                  v = LayoutInflater.from(parent.getContext()).inflate(R.layout.grid_view, parent, false);
                  break;
          }
  
          // set the view's size, margins, paddings and layout parameters
  
          return new ViewHolder(v);
      }
  
      // Replace the contents of a view (invoked by layout manager)
      @Override
      public void onBindViewHolder(final ViewHolder holder, int position) {
          // - get element from your dataset at this position
          // - replace the contents of the view with that element
          final Dataset current = mDataset.get(position);
  
          holder.mName.setText(current.getName());
          holder.mIcon.setImageResource(current.getIconId());
          holder.mLayout.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
  
                  // make your click listener here
                  String f = Functions.getRoot(current.getFile());
  
                  mDataset = Functions.getData(f);
                  new FileAdapter(sContext, f);
                  notifyDataSetChanged();
                  Toast.makeText(v.getContext(), f, Toast.LENGTH_SHORT).show();
              }
          });
  
      }
  
      // Return the size of your dataset (invoked by layout manager)
      @Override
      public int getItemCount() {
          return mDataset.size();
      }
  
      @Override
      public int getItemViewType(int position) {
  
          return super.getItemViewType(position);
      }
  
      public static class ViewHolder extends RecyclerView.ViewHolder {
          TextView mName;
          ImageView mIcon;
          RelativeLayout mLayout;
          //TextView mFileDateModified;
  
          public ViewHolder(View v) {
              super(v);
              mLayout = (RelativeLayout) v.findViewById(R.id.recycler_view_layout);
              mName = (TextView) v.findViewById(R.id.file_name);
              mIcon = (ImageView) v.findViewById(R.id.file_icon);
  
  
          }
      }
  
      public MyAdapter(Context context, String ph) {
          context = sContext;
          mDataset = Functions.getData(ph);
      }
  }
  </code></pre>
  
  <p>I have put this code in onBindViewHolder. But its not working. Any help will be appreciated. Thank you.</p>