TonicArtos / SuperSLiM

A layout manager for the RecyclerView with interchangeable linear, grid, and staggered displays of views, all with configurable section headers including the sticky variety as specified in the material design docs.
http://tonicartos.nz
2.12k stars 297 forks source link

adapter.notifyDataSetChanged() is not working #186

Closed andrisasuke closed 7 years ago

andrisasuke commented 7 years ago

Hi,

i wan to ask. why adapter.notifyDataSetChanged() is not working. After call that recyclerView didn't reloaded. and when i call notifyItemChanged(i). i run example from https://github.com/TonicArtos/SuperSLiM.

@Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        mHeaderDisplay = getResources().getInteger(R.integer.default_header_display);
        mAreMarginsFixed = getResources().getBoolean(R.bool.default_margins_fixed);

        mViews = new ViewHolder(view);
        mViews.initViews(new LayoutManager(getActivity()));
        datas = getResources().getStringArray(R.array.country_names);
        mAdapter = new CountryNamesAdapter(getActivity(), 18, datas);
        mAdapter.setMarginsFixed(true);
        mAdapter.setHeaderDisplay(LayoutManager.LayoutParams.HEADER_STICKY);
        mViews.setAdapter(mAdapter);

        ..................
        datas[4] = "Axaxaxax";
        mAdapter.notifyItemChanged(4);
        ...........

i got below error.

thanks.

E/AndroidRuntime( 5465): Process: com.tonicartos.superslim.example, PID: 5465
E/AndroidRuntime( 5465): java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.ViewGroup$LayoutParams android.view.View.getLayoutParams()' on a null object reference
E/AndroidRuntime( 5465):    at android.support.v7.widget.RecyclerView$LayoutManager.getPosition(RecyclerView.java:5795)
E/AndroidRuntime( 5465):    at com.tonicartos.superslim.LayoutManager.onItemsUpdated(LayoutManager.java:542)
E/AndroidRuntime( 5465):    at android.support.v7.widget.RecyclerView$5.dispatchUpdate(RecyclerView.java:570)
E/AndroidRuntime( 5465):    at android.support.v7.widget.RecyclerView$5.onDispatchSecondPass(RecyclerView.java:580)
E/AndroidRuntime( 5465):    at android.support.v7.widget.AdapterHelper.consumeUpdatesInOnePass(AdapterHelper.java:547)
E/AndroidRuntime( 5465):    at android.support.v7.widget.RecyclerView.processAdapterUpdatesAndSetAnimationFlags(RecyclerView.java:2268)
E/AndroidRuntime( 5465):    at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:2056)
E/AndroidRuntime( 5465):    at android.view.View.measure(View.java:17430)
E/AndroidRuntime( 5465):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
E/AndroidRuntime( 5465):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
E/AndroidRuntime( 5465):    at android.view.View.measure(View.java:17430)
E/AndroidRuntime( 5465):    at android.widget.LinearLayout.measureVertical(LinearLayout.java:875)
E/AndroidRuntime( 5465):    at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
E/AndroidRuntime( 5465):    at android.view.View.measure(View.java:17430)
E/AndroidRuntime( 5465):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
E/AndroidRuntime( 5465):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
E/AndroidRuntime( 5465):    at android.support.v7.internal.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:124)
E/AndroidRuntime( 5465):    at android.view.View.measure(View.java:17430)
E/AndroidRuntime( 5465):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
E/AndroidRuntime( 5465):    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
E/AndroidRuntime( 5465):    at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
E/AndroidRuntime( 5465):    at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
E/AndroidRuntime( 5465):    at android.view.View.measure(View.java:17430)
E/AndroidRuntime( 5465):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
E/AndroidRuntime( 5465):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
E/AndroidRuntime( 5465):    at android.view.View.measure(View.java:17430)
E/AndroidRuntime( 5465):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
E/AndroidRuntime( 5465):    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
E/AndroidRuntime( 5465):    at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
E/AndroidRuntime( 5465):    at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
E/AndroidRuntime( 5465):    at android.view.View.measure(View.java:17430)
E/AndroidRuntime( 5465):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
E/AndroidRuntime( 5465):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
E/AndroidRuntime( 5465):    at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2560)
E/AndroidRuntime( 5465):    at android.view.View.measure(View.java:17430)
E/AndroidRuntime( 5465):    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2001)
E/AndroidRuntime( 5465):    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1166)
E/AndroidRuntime( 5465):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1372)
E/AndroidRuntime( 5465):    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
E/AndroidRuntime( 5465):    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779)