首页 > 解决方案 > 如何更新片段中的 recyclerview 列表?(notifyDataSetChanged 不起作用)

问题描述

我的项目中有一个片段,当您单击那里的 recyclerview 时,它会转到该项目(详细活动打开)。详细活动中有一个like按钮,当你按下它时,在上层;片段中的 recyclerview 需要更新,但我不能。

在此处输入图像描述

我的代码:(片段)

    RecyclerView savedRecyclerView;
    SQLiteHandler sqLiteHandler;
    SavedAdapter savedAdapter;
    List<SavedModel>  itemModels = new ArrayList<>();
    @SuppressLint("StaticFieldLeak")
    public static SavedFragment instance;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_saved, container, false);
        instance = this;


        savedRecyclerView = view.findViewById(R.id.savedRecyclerView);


        sqLiteHandler = new SQLiteHandler(getActivity());

        itemModels = sqLiteHandler.getSaved();


        LinearLayoutManager mainLayoutManager = new LinearLayoutManager(getContext(), RecyclerView.VERTICAL, false);
        savedRecyclerView.setLayoutManager(mainLayoutManager);

        savedAdapter = new SavedAdapter(getContext(), itemModels, "diyet");
        savedRecyclerView.setAdapter(savedAdapter);
        savedAdapter.notifyDataSetChanged();

        return view;
    }

    public static SavedFragment getInstance() {
        return instance;
    }

   public void refreshFragment() {
        Log.e("TAG_FRAGMENT", "refresh");
        itemModels.clear();
        itemModels = sqLiteHandler.getSaved();
        if (itemModels.isEmpty()) {
            empty_animation.setVisibility(View.VISIBLE);
        } else {
            LinearLayoutManager mainLayoutManager = new LinearLayoutManager(getContext(), RecyclerView.VERTICAL, false);
            savedRecyclerView.setLayoutManager(mainLayoutManager);
            savedAdapter = new SavedAdapter(getContext(), itemModels, "diyet");
            savedRecyclerView.setAdapter(savedAdapter);
            savedAdapter.notifyDataSetChanged();
        }
   
getFragmentManager().beginTransaction().detach(this).attach(this).commit();

     getActivity().getSupportFragmentManager().beginTransaction().detach(this).attach(this).commit();

    }


我试试这个但不工作

   @Override
   public void onResume() {
       savedAdapter.notifyDataSetChanged();
       super.onResume();
   }

详细活动 UnFav 按钮单击



if (SavedFragment.getInstance()!=null){
   SavedFragment.getInstance().refreshFragment();
   Log.e("TAG_FRAGMENT","savednotnull");
}

           

标签: javaandroidandroid-recyclerview

解决方案


public void refreshFragment() {           
    getFragmentManager().beginTransaction().detach(this).attach(this).commit();
}

推荐阅读