RecycleView选择倍数

时间:2015-07-30 16:18:25

标签: android

如何正确选择recycleview中的多个行?

我看到这个例子:https://github.com/kiddBubu/RecyclerViewDemo但实际上是蝙蝠因为当向上或向下移动时屏幕值消失或改变或将位置分配到其他行,这样很糟糕。

我尝试显示该行的更多内容。

示例:

Row 1 (uncollapsed)
Row 2 (uncollapsed) - > click - > (collapsed) add + padding or margin
Row 3 (uncollapsed)
.
.
Row x (uncollapsed)

但是当我尝试向上或向下移动列表时,所选的值是随机的,而其他视图会自动更改,我不知道为什么,ListView,RecycleView等于......

我知道如何使用“标签”列表视图法线(但也很糟糕)

我不想要“expandablelistview”。

任何帮助?

更新

我想要这个效果:http://i.stack.imgur.com/fuFFl.png

我没有找到任何东西,而不是Google中的完整示例

代码:

我尝试了4种或5种方法,这是第一种

boolean [] check; check = new Boolean[Fragment2.recyclerView.size()];



Arrays.fill(array, Boolean.FALSE);

。 。

 public class ViewHolder extends RecyclerView.ViewHolder {

        // l1
        public TextView text1,text2,text3,text4;
        LinearLayout imgLayout,l1;

        // l2
        public TextView text5,text6,text7;
        LinearLayout l2;
        public ViewHolder(final View itemView) {

            super(itemView);

            l1 = (LinearLayout) itemView.findViewById(R.id.l1);
            imgLayout = (LinearLayout) itemView.findViewById(R.id.imgLayout);
            text1 = (TextView) itemView.findViewById(R.id.text1);
            text2 = (TextView) itemView.findViewById(R.id.text2);
            text3 = (TextView) itemView.findViewById(R.id.text3);
            text4 = (TextView) itemView.findViewById(R.id.text4);

            l2 = (LinearLayout) itemView.findViewById(R.id.l2);
            text5 = (TextView) itemView.findViewById(R.id.text5);
            text6 = (TextView) itemView.findViewById(R.id.text6);
            text7 = (TextView) itemView.findViewById(R.id.text7);

            int itemPosition = Fragment2.recyclerView.getChildPosition(itemView);


            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if (!check[itemPosition]) {
                        l1.setVisibility(View.VISIBLE);
                        l1.setEnabled(true);
                        check[itemPosition] = true;

                        l2.setVisibility(View.GONE);
                        l2.setEnabled(false);

                    } else {
                        l1.setVisibility(View.GONE);
                        l1.setEnabled(false);
                        check[itemPosition] = false;

                        l2.setVisibility(View.VISIBLE);
                        l2.setEnabled(true);
                    }
                }

1 个答案:

答案 0 :(得分:0)

RecyclerView通过适配器连接数组结构,如ArrayList。更新ArrayList后,您的RecyclerView的View对象应该更改状态。

如果我要在RecyclerView中更新多行,我将更新ArrayList中的值并调用mAdapter.notifyDataSetChanged()。因此,当我滚动时,元素已正确更新。