在RecyclerView中跟踪EditText中的值,可以通过以下步骤实现:
下面是一个示例代码:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<MyDataModel> mDataList;
public MyAdapter(List<MyDataModel> dataList) {
mDataList = dataList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
MyDataModel data = mDataList.get(position);
holder.editText.setText(data.getValue());
holder.editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
data.setValue(s.toString());
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
@Override
public int getItemCount() {
return mDataList.size();
}
public List<String> getAllEditTextValues() {
List<String> values = new ArrayList<>();
for (MyDataModel data : mDataList) {
values.add(data.getValue());
}
return values;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
EditText editText;
public ViewHolder(@NonNull View itemView) {
super(itemView);
editText = itemView.findViewById(R.id.edit_text);
}
}
}
public class MyDataModel {
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
在上述示例中,MyAdapter是RecyclerView的适配器,MyDataModel是存储EditText值的数据模型。在onBindViewHolder方法中,为每个EditText设置了一个TextWatcher监听器,并在onTextChanged方法中更新了相应的数据模型。getAllEditTextValues方法可以用来获取所有EditText的值。
这样,通过RecyclerView的Adapter中的TextWatcher监听器,可以实时跟踪和更新EditText中的值,并通过公共方法获取所有EditText的值。
领取专属 10元无门槛券
手把手带您无忧上云