title: Recycleview's onClick and put extra
body: <p>Please help!  i have a <code>recycleview</code> with search function(base on <code>JSON</code> search). i wanna click-able this <code>recycleview</code>(mean that getting item's ID where shown in item's view ) and then <code>PutExtra</code> this ID to another activity . then another activity get ID. and finally another activity post ID and get values!</p>
  
  <p>this my code , somebody tell my wrongs:):</p>
  
  <p><strong>AdapterFish.java</strong></p>
  
  <pre><code>public class AdapterFish extends RecyclerView.Adapter&lt;RecyclerView.ViewHolder&gt; {
  
  private Context context;
  private LayoutInflater inflater;
  List&lt;DataFish&gt; data= Collections.emptyList();
  DataFish current;
  int currentPos=0;
  public String IDHOLDER;
  private Context activity;
  
  // create constructor to initialize context and data sent from MainActivity
  public AdapterFish(Context context, List&lt;DataFish&gt; data){
      this.context=context;
      inflater= LayoutInflater.from(context);
      this.data=data;
  }
  
  // Inflate the layout when ViewHolder created
  @Override
  public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
      View view=inflater.inflate(R.layout.container_fish, parent,false);
      MyHolder holder=new MyHolder(view);
      return holder;
  }
  
  // Bind data
  @Override
  public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
  
      // Get current position of item in RecyclerView to bind data and assign values from list
      MyHolder myHolder= (MyHolder) holder;
      DataFish current=data.get(position);
      myHolder.company.setText(current.company);
      myHolder.name.setText(current.name);
      myHolder.family.setText(current.family);
      myHolder.id.setText(current.id);
      myHolder.id.setTextColor(ContextCompat.getColor(context, R.color.colorAccent));
  
  }
  
  // return total item from List
  @Override
  public int getItemCount() {
      return data.size();
  }
  
  public Context getActivity() {
      return activity;
  }
  
  public void setActivity(Context activity) {
      this.activity = activity;
  }
  
  
  class MyHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
  
      TextView company;
      TextView name;
      TextView family;
      TextView id;
  
      // create constructor to get widget reference
      public MyHolder(View itemView) {
          super(itemView);
          company= (TextView) itemView.findViewById(R.id.company);
          name = (TextView) itemView.findViewById(R.id.name);
          family = (TextView) itemView.findViewById(R.id.family);
          id = (TextView) itemView.findViewById(R.id.id);
          itemView.setOnClickListener(this);
      }
  
      // Click event for all items
      @Override
      public void onClick(View v) {
  
          Toast.makeText(context, "You clicked an item", Toast.LENGTH_SHORT).show();
          final String ItemId = id.getText().toString().trim();
          Intent intent = new Intent(context, ShowSingleRecordActivity.class);
          intent.putExtra("ID", ItemId);
          context.startActivity(intent);
  
  
  
      }
  
  }}
  </code></pre>
  
  <p><strong>ShowSingleRecordActivity.java (Receiving ID)</strong></p>
  
  <pre><code>public class ShowSingleRecordActivity extends AppCompatActivity {
  
  HttpParse httpParse = new HttpParse();
  ProgressDialog pDialog;
  
  // Http Url For Filter Student Data from Id Sent from previous activity.
  String HttpURL = "http://192.168.137.1/namayeshgah/FilterStudentData.php";
  
  // Http URL for delete Already Open Student Record.
  String HttpUrlDeleteRecord = "http://192.168.137.1/namayeshgah/DeleteStudent.php";
  
  String finalResult ;
  HashMap&lt;String,String&gt; hashMap = new HashMap&lt;&gt;();
  String ParseResult ;
  HashMap&lt;String,String&gt; ResultHash = new HashMap&lt;&gt;();
  String FinalJSonObject ;
  TextView COMPANY,NAME,FAMILY,GENDER,EMAIL1,EMAIL2,PHONE,FAX,TELLFAX,MOBILE;
  String  CompanyHolder ,NameHolder,FamilyHolder,GenderHolder,Email1Holder,Email2Holder,PhoneHolder,FaxHolder,TellfaxHolder,MobileHolder;
  Button UpdateButton, DeleteButton;
  String TempItem;
  ProgressDialog progressDialog2;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_show_single_record);
  
      COMPANY = (TextView)findViewById(R.id.ncompany);
      NAME = (TextView)findViewById(R.id.nname);
      FAMILY=(TextView)findViewById(R.id.nfamily);
      GENDER =(TextView)findViewById(R.id.ngender);
      EMAIL1= (TextView)findViewById(R.id.nemail1);
      EMAIL2= (TextView)findViewById(R.id.nemail2);
      PHONE= (TextView)findViewById(R.id.nphone);
      FAX = (TextView)findViewById(R.id.nfax);
      TELLFAX = (TextView)findViewById(R.id.ntellfax);
      MOBILE = (TextView)findViewById(R.id.nmobile);
  
  
      UpdateButton = (Button)findViewById(R.id.buttonUpdate);
      DeleteButton = (Button)findViewById(R.id.buttonDelete);
  
      //Receiving the ListView Clicked item value send by previous activity.
      TempItem = getIntent().getStringExtra("ID");
  
      //Calling method to filter Student Record and open selected record.
      HttpWebCall(TempItem);
  
  
      UpdateButton.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
  
              Intent intent = new Intent(ShowSingleRecordActivity.this,UpdateActivity.class);
  
              // Sending Student Id, Name, Number and Class to next UpdateActivity.
              intent.putExtra("Id", TempItem);
              intent.putExtra("company",CompanyHolder );
              intent.putExtra("name", NameHolder);
              intent.putExtra("family",FamilyHolder );
              intent.putExtra("gender",GenderHolder );
              intent.putExtra("email1",Email1Holder );
              intent.putExtra("email2",Email2Holder );
              intent.putExtra("phone",PhoneHolder );
              intent.putExtra("fax",FaxHolder );
              intent.putExtra("tellfax",TellfaxHolder );
              intent.putExtra("mobile",MobileHolder );
  
              startActivity(intent);
  
              // Finishing current activity after opening next activity.
              finish();
  
          }
      });
  
      // Add Click listener on Delete button.
      DeleteButton.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
  
              // Calling Student delete method to delete current record using Student ID.
              StudentDelete(TempItem);
  
          }
      });
  
  }
  
  // Method to Delete Student Record
  public void StudentDelete(final String StudentID) {
  
      class StudentDeleteClass extends AsyncTask&lt;String, Void, String&gt; {
  
          @Override
          protected void onPreExecute() {
              super.onPreExecute();
  
              progressDialog2 = ProgressDialog.show(ShowSingleRecordActivity.this, "Loading Data", null, true, true);
          }
  
          @Override
          protected void onPostExecute(String httpResponseMsg) {
  
              super.onPostExecute(httpResponseMsg);
  
              progressDialog2.dismiss();
  
              Toast.makeText(ShowSingleRecordActivity.this, httpResponseMsg.toString(), Toast.LENGTH_LONG).show();
  
              finish();
  
          }
  
          @Override
          protected String doInBackground(String... params) {
  
              // Sending STUDENT id.
              hashMap.put("StudentID", params[0]);
  
              finalResult = httpParse.postRequest(hashMap, HttpUrlDeleteRecord);
  
              return finalResult;
          }
      }
  
      StudentDeleteClass studentDeleteClass = new StudentDeleteClass();
  
      studentDeleteClass.execute(StudentID);
  }
  
  
  //Method to show current record Current Selected Record
  public void HttpWebCall(final String PreviousListViewClickedItem){
  
      class HttpWebCallFunction extends AsyncTask&lt;String,Void,String&gt; {
  
          @Override
          protected void onPreExecute() {
              super.onPreExecute();
  
              pDialog = ProgressDialog.show(ShowSingleRecordActivity.this,"Loading Data",null,true,true);
          }
  
          @Override
          protected void onPostExecute(String httpResponseMsg) {
  
              super.onPostExecute(httpResponseMsg);
  
              pDialog.dismiss();
  
              //Storing Complete JSon Object into String Variable.
              FinalJSonObject = httpResponseMsg ;
  
              //Parsing the Stored JSOn String to GetHttpResponse Method.
              new GetHttpResponse(ShowSingleRecordActivity.this).execute();
  
          }
  
          @Override
          protected String doInBackground(String... params) {
  
              ResultHash.put("StudentID",params[0]);
  
              ParseResult = httpParse.postRequest(ResultHash, HttpURL);
  
              return ParseResult;
          }
      }
  
      HttpWebCallFunction httpWebCallFunction = new HttpWebCallFunction();
  
      httpWebCallFunction.execute(PreviousListViewClickedItem);
  }
  
  
  // Parsing Complete JSON Object.
  private class GetHttpResponse extends AsyncTask&lt;Void, Void, Void&gt;
  {
      public Context context;
  
      public GetHttpResponse(Context context)
      {
          this.context = context;
      }
  
      @Override
      protected void onPreExecute()
      {
          super.onPreExecute();
      }
  
      @Override
      protected Void doInBackground(Void... arg0)
      {
          try
          {
              if(FinalJSonObject != null)
              {
                  JSONArray jsonArray = null;
  
                  try {
                      jsonArray = new JSONArray(FinalJSonObject);
  
                      JSONObject jsonObject;
  
                      for(int i=0; i&lt;jsonArray.length(); i++)
                      {
                          jsonObject = jsonArray.getJSONObject(i);
  
                          // Storing Student Name, Phone Number, Class into Variables.
                          CompanyHolder = jsonObject.getString("company");
                          NameHolder = jsonObject.getString("name");
                          FamilyHolder= jsonObject.getString("family");
                          GenderHolder= jsonObject.getString("gender");
                          Email1Holder = jsonObject.getString("email1");
                          Email2Holder = jsonObject.getString("email2");
                          PhoneHolder = jsonObject.getString("phone");
                          FaxHolder = jsonObject.getString("fax");
                          TellfaxHolder = jsonObject.getString("tellfax");
                          MobileHolder = jsonObject.getString("mobile");
  
  
  
  
  
  
  
                      }
                  }
                  catch (JSONException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  }
              }
          }
          catch (Exception e)
          {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
          return null;
      }
  
      @Override
      protected void onPostExecute(Void result)
      {
  
          // Setting Student Name, Phone Number, Class into TextView after done all process .
          COMPANY.setText(CompanyHolder);
          NAME.setText(NameHolder);
          FAMILY.setText(FamilyHolder);
          GENDER.setText(GenderHolder);
          EMAIL1.setText(Email1Holder);
          EMAIL2.setText(Email2Holder);
          PHONE.setText(PhoneHolder);
          FAX.setText(FaxHolder);
          TELLFAX.setText(TellfaxHolder);
          MOBILE.setText(MobileHolder);
  
  
  
  
  
      }
  }
  </code></pre>
  
  <p>and Searching.java</p>
  
  <pre><code>public class searching extends AppCompatActivity {
  
  // CONNECTION_TIMEOUT and READ_TIMEOUT are in milliseconds
  public static final int CONNECTION_TIMEOUT = 10000;
  public static final int READ_TIMEOUT = 15000;
  private RecyclerView mRVFish;
  private AdapterFish mAdapter;
  
  SearchView searchView = null;
  
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.searching);
  }
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
  
      // adds item to action bar
      getMenuInflater().inflate(R.menu.search_main, menu);
  
      // Get Search item from action bar and Get Search service
      MenuItem searchItem = menu.findItem(R.id.action_search);
      SearchManager searchManager = (SearchManager) searching.this.getSystemService(Context.SEARCH_SERVICE);
      if (searchItem != null) {
          searchView = (SearchView) searchItem.getActionView();
      }
      if (searchView != null) {
          searchView.setSearchableInfo(searchManager.getSearchableInfo(searching.this.getComponentName()));
          searchView.setIconified(false);
      }
  
      return true;
  }
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
  
      return super.onOptionsItemSelected(item);
  }
  
  // Every time when you press search button on keypad an Activity is recreated which in turn calls this function
  @Override
  protected void onNewIntent(Intent intent) {
      // Get search query and create object of class AsyncFetch
      if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
          String query = intent.getStringExtra(SearchManager.QUERY);
          if (searchView != null) {
              searchView.clearFocus();
          }
          new AsyncFetch(query).execute();
  
      }
  }
  
  // Create class AsyncFetch
  private class AsyncFetch extends AsyncTask&lt;String, String, String&gt; {
  
      ProgressDialog pdLoading = new ProgressDialog(searching.this);
      HttpURLConnection conn;
      URL url = null;
      String searchQuery;
  
      public AsyncFetch(String searchQuery){
          this.searchQuery=searchQuery;
      }
  
      @Override
      protected void onPreExecute() {
          super.onPreExecute();
  
          //this method will be running on UI thread
          pdLoading.setMessage("\tLoading...");
          pdLoading.setCancelable(false);
          pdLoading.show();
  
      }
  
      @Override
      protected String doInBackground(String... params) {
          try {
  
              // Enter URL address where your php file resides
              url = new URL("http://192.168.137.1/namayeshgah/search/fish-search.php");
  
          } catch (MalformedURLException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
              return e.toString();
          }
          try {
  
              // Setup HttpURLConnection class to send and receive data from php and mysql
              conn = (HttpURLConnection) url.openConnection();
              conn.setReadTimeout(READ_TIMEOUT);
              conn.setConnectTimeout(CONNECTION_TIMEOUT);
              conn.setRequestMethod("POST");
  
              // setDoInput and setDoOutput to true as we send and recieve data
              conn.setDoInput(true);
              conn.setDoOutput(true);
  
              // add parameter to our above url
              Uri.Builder builder = new Uri.Builder().appendQueryParameter("searchQuery", searchQuery);
              String query = builder.build().getEncodedQuery();
  
              OutputStream os = conn.getOutputStream();
              BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
              writer.write(query);
              writer.flush();
              writer.close();
              os.close();
              conn.connect();
  
          } catch (IOException e1) {
              // TODO Auto-generated catch block
              e1.printStackTrace();
              return e1.toString();
          }
  
          try {
  
              int response_code = conn.getResponseCode();
  
              // Check if successful connection made
              if (response_code == HttpURLConnection.HTTP_OK) {
  
                  // Read data sent from server
                  InputStream input = conn.getInputStream();
                  BufferedReader reader = new BufferedReader(new InputStreamReader(input));
                  StringBuilder result = new StringBuilder();
                  String line;
  
                  while ((line = reader.readLine()) != null) {
                      result.append(line);
                  }
  
                  // Pass data to onPostExecute method
                  return (result.toString());
  
              } else {
                  return("Connection error");
              }
  
          } catch (IOException e) {
              e.printStackTrace();
              return e.toString();
          } finally {
              conn.disconnect();
          }
  
  
      }
  
      @Override
      protected void onPostExecute(String result) {
  
          //this method will be running on UI thread
          pdLoading.dismiss();
          List&lt;DataFish&gt; data=new ArrayList&lt;&gt;();
  
          pdLoading.dismiss();
          if(result.equals("no rows")) {
              Toast.makeText(searching.this, "No Results found for entered query", Toast.LENGTH_LONG).show();
          }else{
  
              try {
  
                  JSONArray jArray = new JSONArray(result);
  
                  // Extract data from json and store into ArrayList as class objects
                  for (int i = 0; i &lt; jArray.length(); i++) {
                      JSONObject json_data = jArray.getJSONObject(i);
                      DataFish fishData = new DataFish();
                      fishData.company = json_data.getString("company");
                      fishData.name = json_data.getString("name");
                      fishData.family = json_data.getString("family");
                      fishData.id = json_data.getString("id");
  
                      data.add(fishData);
                  }
  
                  // Setup and Handover data to recyclerview
                  mRVFish = (RecyclerView) findViewById(R.id.fishPriceList);
                  mAdapter = new AdapterFish(searching.this, data);
                  mRVFish.setAdapter(mAdapter);
                  mRVFish.setLayoutManager(new LinearLayoutManager(searching.this));
  
              } catch (JSONException e) {
                  // You to understand what actually error is and handle it appropriately
                  Toast.makeText(searching.this, e.toString(), Toast.LENGTH_LONG).show();
                  Toast.makeText(searching.this, result.toString(), Toast.LENGTH_LONG).show();
              }
  
          }
  
      }
  
  }
  </code></pre>