【问题标题】:Recyclerview inside fragment inside viewpager notifydatasetchanged not workingviewpager notifydatasetchanged 内的片段内的 Recyclerview 不起作用
【发布时间】:2016-11-16 14:44:39
【问题描述】:

我在一个片段中有一个 recyclerview,而该片段在一个视图寻呼机中。

notifydatasetchanged() 不工作,即使相同的代码在我的其他项目中工作。我能看到的唯一区别是它现在在视图寻呼机内?。

这是通知更改的方式:

public void updateRecyler(){

    // Clear the current array
    alarmsFromSP.clear();
    // Update the array (This is working the array size is changing)
    alarmsFromSP.addAll(AlarmCollection.getAlarms(getActivity()));
    // Notify the change
    adapter.notifyDataSetChanged();
}

我在 oncreate 中创建 recylerview,如下所示:

public class FragmentAllAlarms extends Fragment  {

    // Arraylist of the alarm data from the strings
    ArrayList<Alarm> alarmsFromSP;
    tabRefreshReceiver r;
    RecyclerView rv;
    AlarmsAdapter adapter;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {


        View v = inflater.inflate(R.layout.fragment_all_alarms, container, false);

        // Recycler
        rv = (RecyclerView) v.findViewById(R.id.mainAlarmRecyclerView);
        rv.setLayoutManager(new LinearLayoutManager(getActivity()));

        // Get saved data for alarms from the shared preferences string
        alarmsFromSP = AlarmCollection.getAlarms(getActivity());
        System.out.println("StringIs"+alarmsFromSP.size());

        // Adapter
        adapter = new AlarmsAdapter(getActivity(), alarmsFromSP);
        rv.setAdapter(adapter);

我是否可能丢失了对数组的引用,或者它与 viewpager 有什么关系?

我已经坚持了两天了,现在非常感谢任何帮助。

提前致谢

【问题讨论】:

    标签: android android-fragments android-recyclerview notifydatasetchanged


    【解决方案1】:

    确保调用了updateRecyler(), 并尝试将adapter.notifyDataSetChanged(); 更改为rv.getAdapter().notifyDataSetChanged();

    这对我有用一次。

    【讨论】:

      【解决方案2】:

      我也遇到了同样的问题,后来我找到了一个临时解决方案,而不是使用notifyDataSetChanged()使用

      recyclerView.setAdapter(adapter);
      recyclerView.scrollToPosition(postion);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多