简体   繁体   English

片段内部的RecyclerView无法更新

[英]RecyclerView inside of Fragment not updating

In my application I have a ViewPager that contains 5 fragments with a RecyclerView inside each of them. 在我的应用程序中,我有一个ViewPager ,其中包含5个片段,每个片段中都有一个RecyclerView After clicking on a button I need to refresh items of my RecyclerView s so I'm sending request to server and get response in my activity then I'm calling notifyDataSetChanged(); 单击按钮后,我需要刷新RecyclerView的项目,以便将请求发送到服务器并在活动中获得响应,然后调用notifyDataSetChanged(); for all of my RecyclerView s but changes not visible until I refresh 2-3 pages of my ViewPager . 对于我所有的RecyclerView但更改只有在刷新2-3页ViewPager What is wrong? 怎么了? here is some code from my application 这是我的应用程序中的一些代码

Fragments: 片段:

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();
        }
    }
}

Code inside of Button click listener in Adapter: 适配器中Button Click侦听器内部的代码:

context.getReserved();

Code in Activity refresh after setting new list for each fragment: 为每个片段设置新列表后,刷新“活动”中的代码:

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

Your notifyDataSetChanged is called conditionally based on the values of variables. 根据变量的值有条件地调用notifyDataSetChanged Maybe it is not being called at all. 也许根本没有被调用。

Difficult to say for sure as the code is so minimal. 由于代码很少,因此很难确定。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM