首页 > 学院 > 开发设计 > 正文

RecyclerView遇到的问题记录

2019-11-09 16:13:11
字体:
来源:转载
供稿:网友

RecyclerView遇到的问题记录

1.RecyclerView 使用水平滚动的 LinearLayoutManager 时,焦点丢失问题 设置 RecyclerView 的 LayoutManager 为 LinearLayoutManager ( LinearLayoutManager.HORIZONTAL ),并且 ItemView 里面含有 EditText 。当位置为第三或以上的 ItemView 中的 EditText 获得焦点时, RecyclerView 会自动滚动到第一个 ItemView 的位置。

当改为 LinearLayoutManager.VERTICAL 时,不会出现以上问题。 终于解决,只要继承 LinearLayoutManager ,重写其中的 requestChildRectangleOnScreen 方法,默认返回 false 就 ok 了。

2.RecyclerView中的Item中有EditText,同时我们需要对EditText增加输入监听的情况出现的问题: 我们在滑动的时候,其他行的EditText会莫名地调用addTextChangedListener,这个时候,我们的position不能用,onBindViewHolder的position来获取,list中的元素,因为此时的position是不固定的,也就是说list.get(position),这个拿到的object也是不固定的,所以我们需要在addTextChangedListener的afterTextChange方法中重新通过 CutInfo.CutSizesBean bean =list.get(viewHolder.getAdapterPosition()); 这样能保存bean拿到的值是跟当前的显示的holder是对应的,不然会出现数据紊乱的情况。

@Override public void afterTextChanged(Editable s) { CutInfo.CutSizesBean bean =list.get(viewHolder.getAdapterPosition()); if(TextUtils.isEmpty(s.toString())){//同时解决消失问题 bean.setQuantity(0); }else{ bean.setQuantity(Integer.parseInt(s.toString())); } list.set(viewHolder.getAdapterPosition(),bean); ngPResenter.total(); }

3.其它转载的贴子 [RecyclerView遇到的问题]。(http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2016/0621/4371.html)


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表