我的需求是在recyclerview下的子view中有多个EditText
提交数据的时候需要获取到每个EditText的内容
1.第一种方式,直接在Activity中
View view = recyclerview.getChildAt(1);
获取item中跟布局
好吧,结果是不靠谱的,发现每次只能获取到看的见的 recyclerview的跟布局, 还未出现在我们视野的子view,获取为null,
2.尝试第二种
// positions是RecyclerView中每个item的位置
View view = layoutManager.findViewByPosition(position);
但是在fragment中如果直接调用上面的方法,返回的view为空,我们需要用handler的postDelayed方法延迟获取。
static Handler handler = new Handler(Looper.getMainLooper());
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
handler.postDelayed(runnable, 200);
}
Runnable runnable = new Runnable() {
@Override
public void run() {
View view = layoutManager.findViewByPosition(position);
}
};
结果还是不尽人意,看不见的item,依旧获取不了跟布局
3.直接在Adapter中为item中的edittext添加addTextChangedListener监听方法
holder.contentEdit.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) {
}
@Override
public void afterTextChanged(Editable editable) {
//获取到edittext的值,进行存储,或写回调接口到Activity界面处理
}
});
网友评论