Android 单击CardView而不是单击内部项目

Android 单击CardView而不是单击内部项目,android,onclick,android-recyclerview,multi-select,cardview,Android,Onclick,Android Recyclerview,Multi Select,Cardview,我正在使用RecyclerView和CardView。我遵循WhatsApp式的用户界面。当Whatsapp用户长按主屏幕聊天选项卡中的联系人时,用户可以同时选择多个联系人 我希望用户通过单击cardview中的任意位置进行多选,就像在whatsapp屏幕中一样。我被卡在回收器视图内部的CardView的点击卡住了。我只想一次点击cardview,其余的点击里面的项目是不可点击的,这样当用户进行多选时它们就不会干扰。非常感谢您对解决此问题的任何帮助。CardView也是一个视图,您可以在Car

我正在使用RecyclerView和CardView。我遵循WhatsApp式的用户界面。当Whatsapp用户长按主屏幕聊天选项卡中的联系人时,用户可以同时选择多个联系人


我希望用户通过单击cardview中的任意位置进行多选,就像在whatsapp屏幕中一样。我被卡在回收器视图内部的CardView的点击卡住了。我只想一次点击cardview,其余的点击里面的项目是不可点击的,这样当用户进行多选时它们就不会干扰。非常感谢您对解决此问题的任何帮助。

CardView也是一个视图,您可以在CardView上设置View.OnClickListener

public class MyViewHolder extends RecyclerView.ViewHolder {
    public View view;

    public MyViewHolder(View view) {
        super(view);
        this.view = view;
    }
}
在您的onBindViewHolder()中

或者你可以这样做

xml中的CardView

<android.support.v7.widget.CardView
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:layout_margin="@dimen/card_margin"
    android:elevation="3dp"
    card_view:cardCornerRadius="@dimen/card_album_radius">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ImageView
            android:layout_margin="7dp"
            android:id="@+id/thumbnail"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:layout_centerHorizontal="true"
            android:background="?attr/selectableItemBackgroundBorderless"
            android:clickable="true"
            android:scaleType="fitXY"/>

        <TextView
            android:id="@+id/channel_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/thumbnail"
            android:paddingLeft="@dimen/album_title_padding"
            android:paddingRight="@dimen/album_title_padding"
            android:paddingTop="@dimen/album_title_padding"
            android:textColor="#4c4c4c"
            android:textSize="16dp"
            android:text="Ary News"
            android:fontFamily="sans-serif-smallcaps"
            android:gravity="center_horizontal"/>
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Watch Now"
            android:layout_below="@id/channel_name"
            android:fontFamily="sans-serif-smallcaps"
            android:id="@+id/watch_now"
            android:textStyle="bold"
            android:backgroundTint="@color/colorAccent"/>

        <!--This is the view-->

        <View
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/view"/>

    </RelativeLayout>

</android.support.v7.widget.CardView>
在onBindViewHolder()中


CardView也是一个视图,您可以在CardView上设置View.OnClickListener

public class MyViewHolder extends RecyclerView.ViewHolder {
    public View view;

    public MyViewHolder(View view) {
        super(view);
        this.view = view;
    }
}
在您的onBindViewHolder()中

或者你可以这样做

xml中的CardView

<android.support.v7.widget.CardView
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:layout_margin="@dimen/card_margin"
    android:elevation="3dp"
    card_view:cardCornerRadius="@dimen/card_album_radius">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ImageView
            android:layout_margin="7dp"
            android:id="@+id/thumbnail"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:layout_centerHorizontal="true"
            android:background="?attr/selectableItemBackgroundBorderless"
            android:clickable="true"
            android:scaleType="fitXY"/>

        <TextView
            android:id="@+id/channel_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/thumbnail"
            android:paddingLeft="@dimen/album_title_padding"
            android:paddingRight="@dimen/album_title_padding"
            android:paddingTop="@dimen/album_title_padding"
            android:textColor="#4c4c4c"
            android:textSize="16dp"
            android:text="Ary News"
            android:fontFamily="sans-serif-smallcaps"
            android:gravity="center_horizontal"/>
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Watch Now"
            android:layout_below="@id/channel_name"
            android:fontFamily="sans-serif-smallcaps"
            android:id="@+id/watch_now"
            android:textStyle="bold"
            android:backgroundTint="@color/colorAccent"/>

        <!--This is the view-->

        <View
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/view"/>

    </RelativeLayout>

</android.support.v7.widget.CardView>
在onBindViewHolder()中


感谢Shahzaib的回答,我已经在使用CardView OnClick了。问题是,我可以在一些没有子项的地方使用它。当存在子项时,我不能单击卡片视图,而是触发子项的OnClick。我尝试将子项单击设置为null,并将其设置为false,但我仍然无法在这些子项上实现CardView单击。然后,您可以尝试其他操作。。您可以在CardView中创建视图并使其与父视图匹配。。然后在该视图上使用onClick。。我会在一段时间内编辑答案,希望这会对你有所帮助好吧,我们在同一所大学学习过。期待您的回复!很抱歉迟了答复。我现在是这里第四学期的学生,正在准备期末考试:)谢谢你的回答。我比你年长。如果您在FYP等方面需要任何帮助,我将很乐意帮助您。感谢Shahzaib的回答,我已经在使用CardView OnClick。问题是,我可以在一些没有子项的地方使用它。当存在子项时,我不能单击卡片视图,而是触发子项的OnClick。我尝试将子项单击设置为null,并将其设置为false,但我仍然无法在这些子项上实现CardView单击。然后,您可以尝试其他操作。。您可以在CardView中创建视图并使其与父视图匹配。。然后在该视图上使用onClick。。我会在一段时间内编辑答案,希望这会对你有所帮助好吧,我们在同一所大学学习过。期待您的回复!很抱歉迟了答复。我现在是这里第四学期的学生,正在准备期末考试:)谢谢你的回答。我比你年长。如果您在FYP中需要任何帮助,我将很乐意帮助您。。
@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
    holder.view.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
        Toast.makeText(context,"Card clicked",Toast.LENGTH_SHORT).show();
        }
    });
}