Recycleview嵌套Recycleview时出现的一个问题-待解决

只add间距一次,不要多次add

目标实现下面的效果;

思考一下,很简单,Recycleview嵌套Recycleview;外层的item宽度固定,高度为自适应;内部为一个Recycleview实现的gradview,item宽度固定,然后给内层的recycleview设置一个间距:即addItemDecoration。

但是,事情会这么简单吗?简单我就不会写出来。照着思路一步步走下去,写好后发现,内部Item的间距竟然是会变动的,开始的时候是正常的1倍间距,往后拉多个时,变成了2倍行距,然后继续上啦或者下拉,3倍行距,然后继续继续。图如下:

你以为这样就完了? too young, 我的逻辑是点击按钮会更新下按钮的状态,然后再adapter.notify,就出现了点击一次,item的间距会增大一次,如下图:

注:往右滚动时因为设置了右侧的间距,删除右侧间距保留上下间距时,内部的Recycleview的竖直方向上的间距会一直变大,效果和图是一样的。

至于为什么会出现这样的问题,暂时也没搞清楚,希望大牛看到可以指点下

附上源代码:

外层recycleview的adapter和layout

 

public class MainAdater extends RecyclerView.Adapter<MainAdater.MyViewholder> implements View.OnClickListener {
    List<MainBean> mList;
    Context mContext;
    public boolean shouldSet;
    //  ItemAdater itemAdater;

    public MainAdater(List<MainBean> mList, Context mContext, boolean shouldSet) {
        this.mList = mList;
        this.mContext = mContext;
        this.shouldSet = shouldSet;
    }

    //定义一个点击事件的接口
    public static interface onRecycleviewItemClickListener {

        void onItemClick(View view, MainBean data, int position);
    }

    private onRecycleviewItemClickListener mOnItemClickListener = null;

    public void setOnItemClickListener(onRecycleviewItemClickListener listener) {
        this.mOnItemClickListener = listener;
    }

    public MainAdater(List<MainBean> allWifi, Context mContext) {
        this.mList = allWifi;
        this.mContext = mContext;
    }

    //item的点击事件
    @Override
    public void onClick(View view) {
        if (mOnItemClickListener != null) {
            //注意这里使用getTag方法获取数据
            mOnItemClickListener.onItemClick(view, (MainBean) view.getTag(R.id.id1), (Integer) view.getTag(R.id.id2));

        }
    }

    class MyViewholder extends RecyclerView.ViewHolder {
        RecyclerView gradview;
        TextView textView;

        public MyViewholder(View itemView) {
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值