Retain checkbox values using searchview and recycler view

0

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

    
asked by rafael matinez 23.01.2018 в 20:08
source

0 answers