RecyclerView的notifyDataSetChanged无效

mLikeUsersRecyclerViewAdapter.updateData(mARTICLEs.get(pos).like_users);

我是先把更新完的数据作为参数传给updateData方法

在updateData方法中

this.like_users = like_users;

notifyDataSetChanged();

将数据赋给适配器中的容器,最后调用notifyDataSetChanged。

但是RecyclerView没有更新

我断点调试发现程序最后调用notifyDataSetChanged后

没有调用适配器的onBindViewHolder。

求教啊。。。

PS:我的RecyclerView是放在一个ListView的Item里面,方向为横向的
在线等。。。急

@bigname22 问题解决了,刚才灵基异动,想到了一个可能性,我这个RecyclerView是作为一个ListView的Item中的一部分的,之前数据改变时

我只是调用了RecyclerView的notifyDataser,但是没有更新外层ListView的,我试着调用了一下外层Listview的notifyDataSetChanged,然后就OK了。

mLikeUsersRecyclerViewAdapter.updateData(mARTICLEs.get(pos).like_users);

notifyDataSetChanged();

总之,谢谢各位了。

首先你要确定你的数据确确实实已经更改了。因为view的刷新是和里面的数据息息相关的。参与view绘制的数据更改之后,notify才会更新view。所以你要先
检测数据是否更改

刚才打断点发现可以进onBindViewHolder方法了。。。但是RecyclerView任然没有刷新

试试ListView也notifyDataSetChanged

因为没看到你的源码,so...
有可能是这个问题:this.like_users = like_users;,不能直接这么赋值的呢,
如果他是一个集合的话,试下下面这个方法:
this.like_users.clear();
this.like_user.addAll(list_user);
希望对你有用。
(如果成功的话,还有什么疑问的话再@我)

按照你的方法做了,RecyclerView还是没有更新......

public class LikeUsersRecyclerViewAdapter extends RecyclerView.Adapter {

private LayoutInflater mInflater;
private Context mContext;
private List<User2> like_users = new ArrayList<>();
private int width;
private int height;
private OnItemClickListener mOnItemClickListener;
private int article_pos;

public LikeUsersRecyclerViewAdapter(Context context, List<User2> users, int article_pos) {
    mContext = context;
    like_users.clear();
    like_users.addAll(users);

// like_users = users;
mInflater = LayoutInflater.from(mContext);

    width = ViewUtils.getDefaultDisplay(true,mContext);// 获取屏幕宽度
    height = ViewUtils.getDefaultDisplay(false, mContext);//获取屏幕高度
    this.article_pos = article_pos;
}

//更新RecyclerView的数据
public void updateData(List<User2> users) {
    this.like_users.clear();
    this.like_users.addAll(users);
    notifyDataSetChanged();
}

/**
 * 自定义一个Item点击借口
 */
public interface OnItemClickListener{
    void OnItemClick(View view, int position, int article_pos);
}

@Override
public LikeUsersViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    LikeUsersViewHolder holder = new LikeUsersViewHolder(mInflater.inflate(R.layout.item_like_users_recyclerview, parent, false));
    return holder;
}

@Override
public int getItemCount() {
    return like_users.size();
}

public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
    mOnItemClickListener = onItemClickListener;
}

@Override
public void onBindViewHolder(final LikeUsersViewHolder holder, int position) {
    if (like_users.get(position).avatar_img==null || like_users.get(position).avatar_img.isEmpty()){
        holder.like_user.setImageResource(R.drawable.image_default_picture);
    }else {
        Utils.getImage(mContext, holder.like_user, like_users.get(position).avatar_img);
    }
    ViewUtils.setLayoutParams(holder.like_user, 0, 5, 0, 5, width/10, width/10);
    if (mOnItemClickListener != null){
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int pos = holder.getLayoutPosition();
                mOnItemClickListener.OnItemClick(null ,pos, article_pos);
            }
        });
    }
}

class LikeUsersViewHolder extends RecyclerView.ViewHolder{

    CircleImageView like_user;
    public LikeUsersViewHolder(View itemView) {
        super(itemView);
        like_user = (CircleImageView) itemView.findViewById(R.id.id_like_user);
    }
}

}

这是RecyclerView的适配器
@bigname22