【问题标题】:RecyclerView inside of Fragment not updating片段内部的 RecyclerView 不更新
【发布时间】:2017-02-09 14:31:19
【问题描述】:

在我的应用程序中,我有一个 ViewPager,其中包含 5 个片段,每个片段中都有一个 RecyclerView。单击按钮后,我需要刷新RecyclerViews 的项目,因此我向服务器发送请求并在我的活动中获得响应,然后我为我的所有RecyclerViews 调用notifyDataSetChanged();,但更改不可见直到我刷新我的ViewPager 的 2-3 页。怎么了?这是我的应用程序中的一些代码

片段:

public class ReservedFragment extends Fragment {
List<ReservedTimesModel> arrayList;
ReservedTimesAdapter reservedTimesAdapter;
RecyclerView recyclerView;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_reserved, container, false);
    recyclerView = (RecyclerView) view.findViewById(R.id.fragment_recycle);
    recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
    if (arrayList != null) {
        if (!arrayList.isEmpty()) {
            reservedTimesAdapter = new ReservedTimesAdapter(arrayList, getActivity());
            recyclerView.setAdapter(reservedTimesAdapter);
        } else {
            view.findViewById(R.id.textview).setVisibility(View.VISIBLE);
        }
    } else {
        view.findViewById(R.id.textview).setVisibility(View.VISIBLE);
    }
    return view;
}

public void refresh() {
    if (reservedTimesAdapter != null) {
        if (arrayList.isEmpty()) {
            getView().findViewById(R.id.textview).setVisibility(View.VISIBLE);
        } else {
            reservedTimesAdapter.notifyDataSetChanged();
        }
    }
}

适配器中Button点击监听器内的代码:

context.getReserved();

为每个片段设置新列表后刷新Activity中的代码:

viewPager.setVisibility(View.VISIBLE);
reservedFrag.refresh();
deprecatedFrag.refresh();
cancelledFrag.refresh();
cancelledByAdminFrag.refresh();
pendingFrag.refresh();
viewPager.setCurrentItem(4);

【问题讨论】:

  • 您的适配器似乎只有在 arrayList 为空时才会收到通知

标签: java android android-recyclerview fragment


【解决方案1】:

您的notifyDataSetChanged 会根据变量的值有条件地调用。也许它根本没有被调用。

很难确定,因为代码太少了。

【讨论】:

  • 我为此苦苦挣扎了大约 5 个小时,但我没有注意到那里的 if 语句。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多