RecyclerView as Header Insider RecyclerView ведет себя странно при вызове notifyitemchanged (0) - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть RecyclerView. При этом первым элементом всегда будет HORIZONTAL RecyclerView, а остальные элементы - просто макет. Я заполняю RecyclerView и innerRecyclerView. В родительском адаптере, в getItemViewType (), я проверяю, является ли позиция 0, затем возвращаю HEADER viewType.

@Override
        public int getItemViewType(int position) {{

            Log.d("upisdk", "getItemViewType:" + position);

            if (position == 0) {

                return HEADER;

            } else {

                return DATA;

            }
        }

Все работает до сих пор. Все виды отображаются правильно. Проблема в том, что я хочу обновить innerrecyclerview (HORIONTAL), поэтому если я позвоню parentadapter.notifyitemchanged(0), то innerrecyclerview свернется или я скажу скрыть. И когда я звоню parentadapter.notifyitemchanged(0), это снова появляется. Как будто ничего не изменилось.

Код внутри BindViewHolder для HEADER.

private void configureViewHolder3(final HeaderViewHolder vh3, final int position) {

            Log.d("upisdk", "position->" + position);

            Log.d("upisdk", "ModelArrayList->" + ModelArrayList);

            Log.d("upisdk", "innerAdapterInitialised" + innerAdapterInitialised);
            if (ModelArrayList != null) {
                Log.d("upisdk", "ModelArrayList.size()" + ModelArrayList.size());
            }


            if (ModelArrayList != null && ModelArrayList.size() > 0) {

                if (innerAdapterInitialised == 0) {

                    uniqueTransUserAdapter = new UniqueTransUserAdapter(ModelArrayList, getContext(), MRR, MR, (AppCompatActivity) getActivity(), realm, requestBuilder);
                    linearLayoutManager3 = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false) {
                        @Override
                        public boolean checkLayoutParams(RecyclerView.LayoutParams lp) {
                            // force height of viewHolder here, this will override layout_height from xml
                            lp.width = (int) (getWidth() / 4);

                            return true;
                        }
                    };
                    linearLayoutManager3.setOrientation(RecyclerView.VERTICAL);
                    vh3.uniqueRecyclerView.setLayoutManager(linearLayoutManager3);
                    vh3.uniqueRecyclerView.setAdapter(uniqueTransUserAdapter);

                    innerAdapterInitialised = 1;
                    AdapterInitialised = true;

                } else {

    uniqueTransUserAdapter.notifyDataSetChanged();



                }

            } else {


            }


        }

Это просто свертывание и расширение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...