要保存RecyclerView中旧EditText的内容,可以使用以下方法:
public class MyAdapter extends RecyclerView.Adapter {
private HashMap editTextContent = new HashMap<>();
// ...
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
// 设置EditText的文本
holder.editText.setText(editTextContent.get(getItemId(position)));
// 设置TextWatcher监听器
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) {
// 保存EditText的新文本
editTextContent.put(getItemId(position), s.toString());
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
// ...
}
RecyclerView recyclerView = findViewById(R.id.recyclerView);
LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
int firstVisiblePosition = layoutManager.findFirstVisibleItemPosition();
int lastVisiblePosition = layoutManager.findLastVisibleItemPosition();
for (int i = firstVisiblePosition; i <= lastVisiblePosition; i++) {
long itemId = myAdapter.getItemId(i);
String editTextValue = myAdapter.getEditTextContent().get(itemId);
// 保存EditText的内容到持久化存储中
saveEditTextValue(itemId, editTextValue);
}
通过这种方式,你可以在RecyclerView滚动时保存EditText的内容,并在需要时恢复它们。