美文网首页
获取Recyclerview下的子view

获取Recyclerview下的子view

作者: 橙果子 | 来源:发表于2018-08-31 18:08 被阅读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界面处理
                }
            });
    

    相关文章

      网友评论

          本文标题:获取Recyclerview下的子view

          本文链接:https://www.haomeiwen.com/subject/mjrewftx.html