获取Recyclerview下的子view

2018-08-31  本文已影响0人  橙果子

我的需求是在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界面处理
            }
        });
上一篇下一篇

猜你喜欢

热点阅读