2

我正在使用 RecyclerView 和 CardView。我正在关注类似 UI 的 WhatsApp。当 Whatsapp 用户长按主屏幕聊天选项卡中的联系人时,用户可以同时选择多个联系人。

Whatsapp 多选

我希望用户通过单击卡片视图中的任意位置来进行多选,就像在 whatsapp 屏幕中一样。我被卡在点击回收站视图中的 CardView 上。我只希望cardview的onclick,内部项目的其余点击不可点击,以便在用户多选时它们不会干扰。解决此问题的任何帮助将不胜感激。

4

1 回答 1

0

CardView 也是一个 View,你可以在 CardView 上设置 View.OnClickListener。

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

    public MyViewHolder(View view) {
        super(view);
        this.view = view;
    }
}

在你的 onBindViewHolder()

@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
    holder.view.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //Your Logic
        }
    });
}

或者你可以这样做。

xml中的卡片视图

<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>

在你的 RecyclerView 适配器中

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

public MyViewHolder(View view) {
    super(view);
    this.view = findViewById(R.id.view);
}}

在 onBindViewHolder()

@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();
        }
    });
}
于 2017-01-14T04:21:58.533 回答