Android 使用RecyclerView中的EditText值保存回收器视图项目中的多个复选框选择
Android 使用RecyclerView中的EditText值保存回收器视图项目中的多个复选框选择,android,android-recyclerview,android-studio-3.0,floating-action-button,multipleselection,Android,Android Recyclerview,Android Studio 3.0,Floating Action Button,Multipleselection,我已在recyclerView中呈现了项目列表。单击浮动操作按钮时,我希望传递已选择的项目以及它们在EditText中输入的数量。有人能给我举个例子吗?使用编辑文本文本更改侦听器获取值并将值存储为数组 class MyViewHolder extends RecyclerView.ViewHolder{ protected EditText editText; public MyViewHolder(View itemView) { super(itemView); edi
我已在
recyclerView
中呈现了项目列表。单击浮动操作按钮时,我希望传递已选择的项目以及它们在EditText
中输入的数量。有人能给我举个例子吗?使用编辑文本文本更改侦听器获取值并将值存储为数组
class MyViewHolder extends RecyclerView.ViewHolder{
protected EditText editText;
public MyViewHolder(View itemView) {
super(itemView);
editText = (EditText) itemView.findViewById(R.id.editid);
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) {
}
});
}
您可以通过在模型类中使用一些额外的变量来实现这一点
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
}
视图持有者类别:-
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);
}
});
}
代码中的所有这些解释都在适配器内部执行,然后在执行fab按钮的onClick()时通过getter方法访问这些变量。
例如:-
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
}
请共享代码可能重复的代码。它不仅仅保存editText。它还保存多个editText以及选定的项目。请将您的实现与示例应用程序共享