No toast shown when item clicked RecyclerView

社会主义新天地 提交于 2019-12-01 20:28:18
Andrey E. Vedishchev

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();
            }

        });

    }

}

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

Credits: link

Add the following line in your view.xml android:clickable=true

Remove the following line from first LinearLayout android:clickable="true"

try this,
@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());

          holder.titleTextView.setOnClickListener(new    View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                    Toast.makeText(context,""+position,Toast.LENGTH_SHORT).show();

        }
        });

}




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

Pay attention in cardview scope clickable is true

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_weight="1"
    android:gravity="center_vertical|center|center_horizontal"
    android:layout_height="wrap_content">
        <android.support.v7.widget.CardView
            android:id="@+id/card_view"
            android:layout_width="match_parent"
            card_view:contentPadding="10dp"
            android:layout_height="200dp"
            android:layout_gravity="center"
            android:clickable="true"
            android:transitionGroup="false"
            android:layout_margin="10dp">
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/select_photo"
                android:layout_alignParentTop="true"
                android:layout_gravity="center_horizontal"
                android:layout_margin="5dp"
                />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/select_name"
                android:textSize="25sp"
                android:textStyle="bold"
                android:layout_gravity="bottom|center_horizontal" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:id="@+id/txt_zoom_in"
            />`enter code here`

    </android.support.v7.widget.CardView>
</LinearLayout>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!