在稍微滚动之前不会调用onBindViewHolder

时间:2018-12-27 11:11:50

标签: scroll android-recyclerview notifydatasetchanged

使用带对象或不带对象的notifyItemChanged不会调用onBindView,而是稍作滚动(不获取屏幕视图并进入)。它的工作原理是:

    @Override
public void onClick(View view) {
    if(view.getTag() instanceof MediaEntity){
        final MediaEntity entity = (MediaEntity) view.getTag();
        if(isInSelected(entity.getPath())){
            selected.remove(entity.getPath());
        }else{
            selected.add(entity.getPath());
        }
        notifyItemChanged(getPosition(entity.getPath()),new boolean[]{true});
    }
}

    @Override
public void onBindViewHolder(@NonNull MediaViewholder holder, int position, @NonNull List<Object> payloads) {
    if(!payloads.isEmpty()){
        holder.checkView.setVisibility(holder.checkView.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
    }else{
//...
        holder.populateOnBind(activity,paths.get(position),isVideo,isCheck);
    }
}

看起来问题是在第一次滚动之后发生的,所有显示的项目都可以正常工作。但是在第一次滚动之后会发生这种情况。

0 个答案:

没有答案