How to change if item changing in recyclerview in android

Viewed 53

Hi I have two scenarios one is based on position of the grid view position I am displaying recyclerview list was populating .

Second scenario I was implemented search functionality suppose use search for letter A in that gridview My grid item matches then particular item is displayed .On click on that list I am rendering recyclerview list.

But in the first scenario it is working fine .But in the second scenario position got changed because of the position I am getting wrong list.

Can any one help me How to sort out from the issue

Below Adpter Onitem click I am calling this via interface Adapter:

public interface MyItemClickListener{
        void myItemClick(int position);
    }

Below code is onitem click I am displaying the below list java:

 @Override
    public void myItemClick(final int position) {
        
        final String speclname=specilaistlist.get(position).getSpecialization();
 Doctorlist doctorlist2 = new Doctorlist(Specialization, DoctorName, Qualification, Experience, LanguagesKnown, ProfllePhoto, rupee.concat(ConsultationFees), Hospital, HospitalID, DoctorID);
                        doctortext.setVisibility(View.VISIBLE);
                        if (dataList1.getSpecialization().equals(speclname)) {
                            doctorlists_spe.add(doctorlist2);
                            doctorAdapter.notifyDataSetChanged();
                        }

search functionality list is coming correct but Onclick of that item different list is displaying Scenario 2 code:

 search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                callSearch(query);
                return true;
            }
            @Override
            public boolean onQueryTextChange(String newText) {
                Log.d("TAG","new Text ==>"+newText);
                callSearch(newText);
              //  speclializationAdapter.getFilter().filter(newText);
                return true;
            }
            public void callSearch(String query) {
                query = query.toLowerCase();
                Log.i("query", "" + query);
                onSearch(query);
            }
        });

        return rootView;
    }

    public void onSearch(String query){
        Log.d("Query From Activity",query);
        ArrayList<DataList> filteredList = new ArrayList<>();
        //resultView.setVisibility(View.GONE);
        for (int i = 0; i < specilaistlist.size(); i++) {

            final String jTitle = specilaistlist.get(i).getSpecialization().toUpperCase();
            //   final String jCompany = listTask.get(i).getJob_company().toLowerCase();
            //  final String jLoc = mDataList.get(i).getJob_location().toLowerCase();
            if (jTitle.toLowerCase().contains(query) ) {
                filteredList.add(specilaistlist.get(i));

            } else {


            }
        }

        speclializationAdapter = new SpeclializationAdapter(getContext(),filteredList,this);
        gridLayout.setAdapter(speclializationAdapter);
        speclializationAdapter.notifyDataSetChanged();
    }
0 Answers
Related