title: How to handle button click on recyclerView?
body: <p>I have the following code, how do I handle the button click with the current card title? I have already tried everything I can, but just can't found a way to handle it.</p>
  
  <p>This is my current <code>MainActivity:</code></p>
  
  <pre><code>
  public class MainActivity extends AppCompatActivity {
  
      private RecyclerView mRecyclerView;
      private RecyclerView.Adapter mAdapter;
      private RecyclerView.LayoutManager mLayoutManager;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          Toolbar toolbar = findViewById(R.id.toolbar);
          setSupportActionBar(toolbar);
  
          StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
          StrictMode.setThreadPolicy(policy);
  
          mRecyclerView = findViewById(R.id.recycler_view);
  
          List&lt;DataModel&gt; dataModelList = new ArrayList&lt;&gt;();
          for (int i = 1; i &lt;= 20; ++i) {
              dataModelList.add(new DataModel(i));
          }
  
          // use this setting to improve performance if you know that changes
  
          // in content do not change the layout size of the RecyclerView
          mRecyclerView.setNestedScrollingEnabled(false);
          mRecyclerView.setHasFixedSize(true);
  
          // use a linear layout manager
  
          mLayoutManager = new LinearLayoutManager(this);
          mRecyclerView.setLayoutManager(mLayoutManager);
  
          // specify an adapter and pass in our data model list
  
          mAdapter = new MyAdapter(dataModelList, this);
          mRecyclerView.setAdapter(mAdapter);
  
          /*
          FloatingActionButton fab = findViewById(R.id.fab);
          fab.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                  Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                          .setAction("Action", null).show();
              }
          });*/
      }
  
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          // Inflate the menu; this adds items to the action bar if it is present.
          getMenuInflater().inflate(R.menu.menu_main, menu);
          return true;
      }
  
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
          // Handle action bar item clicks here. The action bar will
          // automatically handle clicks on the Home/Up button, so long
          // as you specify a parent activity in AndroidManifest.xml.
          int id = item.getItemId();
  
          //noinspection SimplifiableIfStatement
          if (id == R.id.action_settings) {
              return true;
          }
  
          return super.onOptionsItemSelected(item);
      }
  }
  
  </code></pre>
  
  <p>This is my current MyAdapter:</p>
  
  <pre><code>
  public class MyAdapter extends RecyclerView.Adapter&lt;MyAdapter.MyViewHolder&gt; {
  
      private List&lt;DataModel&gt; dataModelList;
      private Context mContext;
      private View.OnClickListener onClickListener;
  
  
  
      public MyAdapter(List&lt;DataModel&gt; modelList, Context context) {
          dataModelList = modelList;
          mContext = context;
          this.onClickListener = onClickListener;
      }
  
      public MyAdapter() {
  
      }
  
      @NonNull
      @Override
      public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
          // Inflate out card list item
  
          View view = LayoutInflater.from(parent.getContext())
                  .inflate(R.layout.list_item, parent, false);
          // Return a new view holder
  
          return new MyViewHolder(view);
      }
  
  
      @Override
      public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
          // Bind data for the item at position
  
          holder.bindData(dataModelList.get(position), mContext);
      }
  
  
      @Override
      public int getItemCount() {
          // Return the total number of items
  
          return dataModelList.size();
      }
  
      // View holder class whose objects represent each list item
  
      public static class MyViewHolder extends RecyclerView.ViewHolder {
          public ImageView cardImageView;
          public TextView titleTextView;
          public TextView subTitleTextView;
  
          public MyViewHolder(@NonNull View itemView) {
              super(itemView);
              cardImageView = itemView.findViewById(R.id.imageView);
              titleTextView = itemView.findViewById(R.id.card_title);
              subTitleTextView = itemView.findViewById(R.id.card_subtitle);
  
  
          }
  
          public void bindData(DataModel dataModel, Context context) {
  
              /*try {
                  InputStream is = (InputStream) new URL("https://storage.googleapis.com/spec-host/mio-staging%2Fmio-material%2F1563837804615%2Fassets%2F1Y_wiJ0LkYvEhVYTLhFazPRmQrN7dtsq7%2Fdevelop-web-2x1-small.png").getContent();
                  Drawable d = Drawable.createFromStream(is, "src name");
                  cardImageView.setImageDrawable(d);
              } catch (Exception e) {
                  Log.i("techrcslog", e.toString());
              }*/
  
              Picasso.get().load("https://storage.googleapis.com/spec-host/mio-staging%2Fmio-material%2F1563837804615%2Fassets%2F1Y_wiJ0LkYvEhVYTLhFazPRmQrN7dtsq7%2Fdevelop-web-2x1-small.png").into(cardImageView);
  
              //cardImageView.setImageDrawable(dataModel.getImageDrawable());
              titleTextView.setText(dataModel.getTitle());
              subTitleTextView.setText(dataModel.getSubTitle());
          }
      }
  }
  </code></pre>
  
  <p>This is my current DataModel:</p>
  
  <pre><code>
  public class DataModel {
      private int imageDrawable;
      private String title;
      private String subTitle;
  
      public DataModel(int id) {
          imageDrawable = R.mipmap.ic_launcher;
          title = String.format(Locale.ENGLISH, "Title %d Goes Here", id);
          subTitle = String.format(Locale.ENGLISH, "Sub title %d goes here", id);
      }
  
      public int getImageDrawable() {
          return imageDrawable;
      }
  
      public String getTitle() {
          return title;
      }
  
      public String getSubTitle() {
          return subTitle;
      }
  }
  </code></pre>
  
  <p>This is my current list_item.xml:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;com.google.android.material.card.MaterialCardView
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      app:cardCornerRadius="3dp"
      app:cardElevation="5dp"&gt;
      &lt;androidx.constraintlayout.widget.ConstraintLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_marginBottom="8dp"&gt;
  
          &lt;ImageView
              android:id="@+id/imageView"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              app:layout_constraintStart_toStartOf="parent"
              app:layout_constraintTop_toTopOf="parent"
              android:adjustViewBounds="true"
              app:srcCompat="@mipmap/ic_launcher" /&gt;
  
          &lt;TextView
              android:id="@+id/card_title"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_marginStart="16dp"
              android:layout_marginLeft="16dp"
              android:layout_marginTop="16dp"
              android:text="Title goes here"
              style="@style/TextAppearance.MaterialComponents.Headline6"
              app:layout_constraintStart_toStartOf="parent"
              app:layout_constraintTop_toBottomOf="@+id/imageView" /&gt;
  
          &lt;TextView
              android:id="@+id/card_subtitle"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_marginTop="8dp"
              android:text="Subtitle goes here"
              style="@style/TextAppearance.MaterialComponents.Caption"
              app:layout_constraintStart_toStartOf="@+id/card_title"
              app:layout_constraintTop_toBottomOf="@+id/card_title" /&gt;
  
          &lt;com.google.android.material.button.MaterialButton
              android:id="@+id/action_button_1"
              style="@style/Widget.MaterialComponents.Button.TextButton"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_marginTop="16dp"
              android:text="ACTION 1"
              android:textSize="15sp"
              android:textAppearance="@style/TextAppearance.MaterialComponents.Headline6"
              app:layout_constraintStart_toStartOf="@+id/card_subtitle"
              app:layout_constraintTop_toBottomOf="@+id/card_subtitle" /&gt;
  
          &lt;com.google.android.material.button.MaterialButton
              android:id="@+id/action_button_2"
              style="@style/Widget.MaterialComponents.Button.TextButton"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_marginStart="32dp"
              android:layout_marginLeft="32dp"
              android:text="ACTION 2"
              android:textSize="15sp"
              android:textAppearance="@style/TextAppearance.MaterialComponents.Headline6"
              app:layout_constraintBottom_toTopOf="@+id/action_button_1"
              app:layout_constraintStart_toEndOf="@+id/action_button_1"
              app:layout_constraintTop_toBottomOf="@+id/action_button_1" /&gt;
      &lt;/androidx.constraintlayout.widget.ConstraintLayout&gt;
  &lt;/com.google.android.material.card.MaterialCardView&gt;
  </code></pre>
  
  <p>Any help would be very very good... Thanks!</p>