viewHolder.mContentEt.setOnFocusChangeListener((v, hasFocus) -> {
TextWatcher currentTextWatcher = (TextWatcher) viewHolder.mContentEt.getTag(R.id.text_watcher_tag);
// 移除现有的TextWatcher
if (currentTextWatcher != null) {
viewHolder.mContentEt.removeTextChangedListener(currentTextWatcher);
}
if (hasFocus) {
TextWatcher textWatcher = new TextWatcher() {
private final int position;
{
// 初始化位置
this.position = itemPosition;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
getItem(position).setScreenWords(s.toString());
}
};
viewHolder.mContentEt.addTextChangedListener(textWatcher);
viewHolder.mContentEt.setTag(R.id.text_watcher_tag, textWatcher);
}
});
解决RecyclerView里使用EditText逻辑错乱
于 2025-01-02 09:30:46 首次发布