Вы можете сделать это, используя некоторые дополнительные переменные в классе модели
For example:-
class Model{
private boolean isChecked; // for checkbox click set this to true and notifyDataSetChanged()
private String editTextValue: // call text watcher with editext change and set this variable after every text change in edit text
}
Класс View Holder: -
class MyViewHolder extends RecyclerView.ViewHolder{
protected EditText editText;
protected CheckBox checkBox;
public MyViewHolder(View itemView) {
super(itemView);
editText = (EditText) itemView.findViewById(R.id.editid);
checkBox = (CheckBox) itemView.findViewById(R.id.checkbox);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
editModelArrayList.get(getAdapterPosition()).setEditTextValue(editText.getText().toString());
}
@Override
public void afterTextChanged(Editable editable) {
}
});
checkBox.setOnCheckedChangeListener((buttonView, isChecked) -> {
if (isChecked) {
editModelArrayList.get(getAdapterPosition()).setChecked(true);
} else {
editModelArrayList.get(getAdapterPosition()).setChecked(false);
}
});
}
Все эти объяснения в коде выполняются внутри адаптера, а затем открываютсяэти переменные методами getter во время onClick () потрясающей кнопки.Например: -
void onFabButtonClick(View v){
for(Object ob: yourList){
if(ob.isChecked())
{ // store checked data here in any list and pass any where you want
}
}
// pass data from here after store
}