首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在RecyclerView中跟踪EditText中的值

在RecyclerView中跟踪EditText中的值,可以通过以下步骤实现:

  1. 在RecyclerView的Adapter中,为每个EditText设置一个TextWatcher监听器。可以在ViewHolder的构造函数中为EditText添加监听器,或者在onBindViewHolder方法中为每个EditText重新设置监听器。
  2. 在TextWatcher的onTextChanged方法中,获取EditText中的文本值,并将其存储到相应的数据模型中。可以通过调用Adapter中的方法来更新数据模型。
  3. 在RecyclerView的Adapter中,提供一个公共方法来获取所有EditText的值。该方法可以遍历数据模型,并返回一个包含所有EditText值的列表。

下面是一个示例代码:

代码语言:java
复制
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的值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券