在recyclerView中设置cardView的可见性问题。

问题描述 投票:0回答:1

你好,我有一个问题,设置的可见性的 cardView 部分。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout(..........)>

    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        (..........)>

        <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/titleLayout"
            (..........)>

            <TextView
                android:id="@+id/text_view_title"
                (..........)/>

            <androidx.constraintlayout.widget.ConstraintLayout 
                android:visibility="gone" <<<<<<<<<
                android:id="@+id/expandableView"
                (..........)>

                <TextView
                    android:id="@+id/text_view_description"
                    (..........) />

                <TextView
                    android:id="@+id/text_view_priority"
                   (..........) />

            </androidx.constraintlayout.widget.ConstraintLayout>

        </androidx.constraintlayout.widget.ConstraintLayout>

    </androidx.cardview.widget.CardView>

</LinearLayout>

你怎么能看到我划分的 cardView 分为两部分。在我 showDescription() 方法,我想把描述部分的可见性改为可见,或者(如果已经可见)改为消失。

View cardView = inflater.inflate(R.layout.note_item, container, false);
        final ConstraintLayout expandableView = cardView.findViewById(R.id.expandableView);

        adapter.setOnItemClickListener(new NoteAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(final DocumentSnapshot documentSnapshot, int position) {

                Note note = documentSnapshot.toObject(Note.class);
                int pathInt = position;
                String path =String.valueOf(pathInt);
                showDescription(expandableView);
            }
        });
        return RootView;
    }
    public void showDescription (ConstraintLayout expandableView){
        if(expandableView.getVisibility()== View.VISIBLE){
            expandableView.setVisibility(View.GONE);
        }else {
            expandableView.setVisibility(View.GONE);
        }
    }
}

我不知道为什么,当我点击 cardView (不管是哪一个)什么都没有发生。也许是因为我的应用程序不知道在巫婆上 cardView 执行该方法?我怎么能让它工作?

java android android-recyclerview visibility android-cardview
1个回答
1
投票

问题出在这里。

final ConstraintLayout expandableView = cardView.findViewById(R.id.expandableView);

你正在做你的 expandableView final. final 变量不能被修改。移除 final 关键字。

ConstraintLayout expandableView = cardView.findViewById(R.id.expandableView);

我觉得你也应该把你的 showDescription 函数的代码在 setOnItemClickListener 而不是将 "expandableView "传递给函数。

© www.soinside.com 2019 - 2024. All rights reserved.