项目单击 RecyclerView 时不显示吐司 [英] No toast shown when item clicked RecyclerView

查看:15
本文介绍了项目单击 RecyclerView 时不显示吐司的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好的,我知道,可能有人已经问过这个问题了.我已经在 此链接 上找到了解决问题的可能方法.但是,由于未知原因,该解决方案对我不起作用.我想在 RecyclerView 内单击项目(CardView)时显示 Toast.此 Toast 必须向我显示所单击项目的位置.当我点击 CardView 时,我看到了波纹——这意味着卡片被点击了——但不幸的是,我没有看到任何 toast.有人可以解释我为什么吗?提前致谢.

Ok, I know, probably someone has already asked this question. I have already found a possible solution for my problem on this link. But, for an unknown reason, that solution doesn't work for me. I want to display a Toast when an item (a CardView) is clicked inside a RecyclerView. This Toast must show me the position of the item clicked. When I click on a CardView I see the ripple - so that means that the card is clicked - but unfortunately, I don't see any toast. Can someone explain me why? Thanks in advance.

这是我的适配器:

public class MainRecyclerViewAdapter extends RecyclerView.Adapter<MainRecyclerViewAdapter.MyMainViewHolder> {


private List<Information> mainInfo;
MyDatabase myDatabase;


public MainRecyclerViewAdapter(List<Information> mainInfo) {
    this.mainInfo = mainInfo;
}

public static class MyMainViewHolder extends RecyclerView.ViewHolder {
    TextView titleTextView, notesTextView, dateTextView, timeTextView;
    ImageView imageView;
    LinearLayout linearLayout;

    public MyMainViewHolder(View itemView) {
        super(itemView);
        linearLayout = (LinearLayout) itemView.findViewById(R.id.mainLayout);
        imageView = (ImageView) itemView.findViewById(R.id.imgIcon);
        titleTextView = (TextView) itemView.findViewById(R.id.title_TextView);
        notesTextView = (TextView) itemView.findViewById(R.id.notes_TextView);
        dateTextView = (TextView) itemView.findViewById(R.id.date_TextView);
        timeTextView = (TextView) itemView.findViewById(R.id.time_TextView);

        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(v.getContext(), "Position: " + Integer.toString(getAdapterPosition()), Toast.LENGTH_LONG).show();
            }
        });

    }

}



@Override
public MyMainViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.main_single_raw, parent, false);
    MyMainViewHolder holder = new MyMainViewHolder(v);
    return holder;
}

public void delete(int position){
    mainInfo.remove(position);
    notifyItemRemoved(position);
}

@Override
public void onBindViewHolder(final MyMainViewHolder holder, final int position) {
    holder.imageView.setImageResource(mainInfo.get(position).getICON_ID());
    holder.titleTextView.setText(mainInfo.get(position).getTITLE());
    holder.notesTextView.setText(mainInfo.get(position).getNOTES());
    holder.dateTextView.setText(mainInfo.get(position).getDATE());
    holder.timeTextView.setText(mainInfo.get(position).getTIME());


}




@Override
public int getItemCount() {
    return mainInfo.size();
}}

这是我的cardView的布局文件:

This is the layout file of my cardView:

<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/card_view1"
android:clickable="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
card_view:cardCornerRadius="3dp"
android:layout_margin="5dp">

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="0.5dp"
    android:clickable="true"
    android:background="?android:selectableItemBackground"
    android:orientation="horizontal"
    android:weightSum="10">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">


        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:layout_marginLeft="16dp"
            android:layout_weight="8.5">

            <TextView
                android:id="@+id/title_TextView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:layout_marginLeft="0dp"
                android:layout_marginRight="8dp"
                android:layout_marginTop="5dp"
                android:text="Title"
                android:fontFamily="sans-serif-light"
                android:textColor="#F57C00"
                android:textSize="25sp"
                />



        </RelativeLayout>

        <View
            android:layout_width="fill_parent"
            android:id="@+id/divider1"
            android:layout_height="0.1dp"
            android:layout_below="@+id/title_TextView"
            android:background="@android:color/darker_gray"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="fill_parent"
                android:layout_marginLeft="16dp"
                android:layout_weight="8.5">

                <ImageView
                    android:id="@+id/imgIcon"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_centerHorizontal="true"
                    android:layout_centerVertical="true"
                    android:src="@mipmap/ic_alarm_check_grey600_48dp" />


            </RelativeLayout>


            <LinearLayout
                android:id="@+id/linear"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1.5"
                android:orientation="vertical">


                <TextView
                    android:id="@+id/notes_TextView"
                    android:paddingTop="5dp"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="5dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="8dp"
                    android:text="notes"
                    android:textColor="#ff565656"
                    android:textSize="12sp" />

                <TextView
                    android:id="@+id/date_TextView"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="5dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="8dp"
                    android:text="date"
                    android:textColor="#ff565656"
                    android:textSize="12sp" />

                <TextView
                    android:id="@+id/time_TextView"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="5dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="8dp"
                    android:text="time"
                    android:textColor="#ff565656"
                    android:textSize="12sp" />


            </LinearLayout>


        </LinearLayout>


    </LinearLayout>


</LinearLayout>

推荐答案

问题解决了!这是工作代码:

Problem solved! This is the working code:

public static class MyMainViewHolder extends RecyclerView.ViewHolder {
    TextView titleTextView, notesTextView, dateTextView, timeTextView;
    ImageView imageView;
    LinearLayout linearLayout;

    public MyMainViewHolder(final View itemView) {
        super(itemView);
        linearLayout = (LinearLayout) itemView.findViewById(R.id.mainLayout);
        imageView = (ImageView) itemView.findViewById(R.id.imgIcon);
        titleTextView = (TextView) itemView.findViewById(R.id.title_TextView);
        notesTextView = (TextView) itemView.findViewById(R.id.notes_TextView);
        dateTextView = (TextView) itemView.findViewById(R.id.date_TextView);
        timeTextView = (TextView) itemView.findViewById(R.id.time_TextView);



        itemView.setClickable(true);
        itemView.setFocusableInTouchMode(true);

        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Toast.makeText(itemView.getContext(), "Position: " + Integer.toString(getAdapterPosition()), Toast.LENGTH_LONG).show();
            }
        });

        linearLayout.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View v) {

                Toast.makeText(itemView.getContext(), "Position: " + Integer.toString(getAdapterPosition()), Toast.LENGTH_LONG).show();
            }

        });

    }

}

所以现在,如果我点击 linearLayout - 所以点击整个 cardView - 我会看到它的位置!

So now, if i click on the linearLayout - so on the entire cardView - I see its position!

致谢:链接

这篇关于项目单击 RecyclerView 时不显示吐司的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆