【发布时间】:2019-03-12 18:30:00
【问题描述】:
我正在尝试制作一个可以添加项目的 recyclerView,每个项目都有 EditText 和 CheckBox、ImageView 等。
我成功创建了添加新项目的功能,它在onBindViewHolder() 中保存了TextWatcher 的数据。并且TextView的数据保持良好。
这是onBindViewHolder():
@Override
public void onBindViewHolder(@NonNull final EditMessageViewHolder holder, final int position) {
MessageItem item = items.get(position);
holder.messageET.setText(item.getMessage());
holder.messageET.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) {
items.get(position).setMessage(charSequence.toString());
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
这是适配器中的addItem() 和getMessageItem():
public void addItem(MessageItem messageItem) {
items.add(messageItem);
notifyItemInserted(items.size());
}
public ArrayList<MessageItem> getMessageItems() {
return items;
}
但是,问题是当我添加更多项目或向上或向下滚动时。数据混合在错误的顺序和错误的数据中。我该如何处理这个问题以及如何防止 CheckBox 和 ImageView 出现这个问题?
【问题讨论】:
标签: android android-recyclerview