notifyDataSetChanged()没有调用onBindViewHolder

时间:2017-04-19 08:46:16

标签: java android android-recyclerview

当我打电话notifyDataSetChanged()它不'吨打电话给我onBindViewHolder,我不知道为什么它这样做,我currely使用自定义布局和唐'知道如果有什么关系呢

有人有什么想法吗?这里的代码是我用来在我的适配器中调用datasetchange的代码的和平。

public void updateFriendsCheckinData(HashMap<Integer, List<LiveCheckin>>  updatedCheckinMap){
        this.friendCheckinMap = updatedCheckinMap;
        notifyDataSetChanged();
    }

2 个答案:

答案 0 :(得分:0)

试试这个:

public void updateFriendsCheckinData(HashMap<Integer, List<LiveCheckin>> updatedCheckinMap) {
    // here we are clearing existing data in the HashMap
    friendCheckinMap.clear();

    friendCheckinMap = updatedCheckinMap;
    notifyDataSetChanged();
}

然后在你的getItemCount()方法中我们有:

@Override
public int getItemCount() {
    // if you are using the data in the list retrieved from the hashmap, then here return the size of the list instead.
    return friendCheckinMap.size();
 }

希望这有帮助。

答案 1 :(得分:-1)

你必须在onClick事件而不是OnBindviewHolder中调用notifydatasetchanged。

如果您调用OnBindviewHolder,它可能会因为recyclerview填充视图而崩溃。

以下是samplecode

 @Override
public void onRecyclerViewItemClick(@NonNull View view, @NonNull AndroidVersion calendarDTO, int position) {

    Toast.makeText(getContext(),String.valueOf(position), Toast.LENGTH_SHORT).show();

        adapter.notifyDataSetChanged();

}