当我点击同一行的子视图时,为什么行上的Recycler视图数据消失了?

时间:2017-01-07 08:27:12

标签: android listview android-recyclerview

我已经创建了一个带有cardView行的回收者视图视图,在卡片视图中我已经放置了一个布局,点击它后会打开一个子视图,当我点击布局时,子视图即将到来但是数据哪个已经填充卡已经消失了。当我向下滚动子视图本身消失,卡上的数据再次填充。我很长时间没能找到解决方案,请帮助我。这就是我在适配器中添加子视图的方法

    @Override
        public void onClick(View view) {

            mAdapter = new ViewOrderAdapter(orderList);
            LayoutInflater inflater = (LayoutInflater) view.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//            view = inflater.inflate(R.layout.cancelledcardview, null);
            final RelativeLayout parent = (RelativeLayout) inflater.inflate(R.layout.cancelledcardview, null);

            Log.i("TAG", "onclickmethod" + parent);
            final View child = inflater.inflate(R.layout.vieworder_layout, null);
            recyclerView = (RecyclerView)child. findViewById(R.id.recycler_view);
            Log.i("TAG", "onclickmethod" + recyclerView);
            RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(view.getContext());
            recyclerView.setLayoutManager(mLayoutManager);
            recyclerView.setAdapter(mAdapter);
            parent.addView(child);
            ImageView cancelButton= (ImageView)child.findViewById(R.id.cancelbutton);
            cancelButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Log.i("TAG", "onclickmethodcancel button" );
                    parent.removeView(child);

                }
            });
            prepareMovieData();
            cv.addView(parent);
        }

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

您必须维持点击状态。当您滚动列表时,再次调用onBind方法并再次填充旧卡。 我建议 - 在模型中创建另外1个变量(isClicked),并在单击它时将其设置为true。 - 在适配器的onBind方法中,您必须再次编写用于创建此子视图的代码。

或者您可以使用ExpandableListView,这将更优雅地处理状态。