My question is when looking for elements of a recycler view with a searchview and select them if I take the selected cardview but send me other values, I had it as a save position but when looking I take the positions wrong, then I'm taking the ID
I have the search like this
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_main, menu);
// Associate searchable configuration with the SearchView
SearchManager searchManager = (SearchManager) getContext().getSystemService(Context.SEARCH_SERVICE);
searchView = (SearchView) menu.findItem(R.id.action_search)
.getActionView();
searchView.setSearchableInfo(searchManager
.getSearchableInfo(getActivity().getComponentName()));
searchView.setMaxWidth(Integer.MAX_VALUE);
// listening to search query text change
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
// filter recycler view when query submitted
mAdapter.getFilter().filter(query);
return false;
}
@Override
public boolean onQueryTextChange(String query) {
// filter recycler view when text is changed
mAdapter.getFilter().filter(query);
return false;
}
});
}
The checkbox adapter like this:
holder.chk.setOnCheckedChangeListener(null);
holder.chk.setChecked(contactList.get(contact.getID()).isSelected());
holder.chk.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener() { @Override public void
onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//contactList.get(holder.getAdapterPosition()).setSelected(isChecked);
contactList.get(contact.getID()).setSelected(isChecked);
}
});
To send the data I take it like this
if (id == R.id.action_graficar) {
StringBuilder stringBuilder = new StringBuilder();
for (Contact number : contactList) {
if (number.isSelected()) {
if (stringBuilder.length() > 0)
stringBuilder.append(", ");
stringBuilder.append(number.getID()+"-"+number.getServicio());
}
}
Toast.makeText(getActivity(), "Unidades seleccionadas: "+stringBuilder.toString(), Toast.LENGTH_LONG).show();
Intent intent = new Intent(getActivity(), grafica2.class);
intent.putExtra("Unidades", stringBuilder.toString());
startActivity(intent);
System.out.println("Selecciono: "+stringBuilder.toString());
}
Thanks