我正在尝试使用clicklistener来捕获我的项目的点击次数 在我的Recycleview中, 但我的大部分视图都是由图像构成的,当我按下图像时它没有注册, 只有当我按下图像外 我该如何修复它以便所有卡片视图都能捕获到点击? 或者每次按下图片时将焦点设置到卡片上?
这是我的适配器:
public class cardsAdapter extends RecyclerView.Adapter<cardsAdapter.MyViewHolder> {
private Context mContext;
private List<CardModel> albumList;
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView title, count;
public ImageView thumbnail;
public MyViewHolder(View view) {
super(view);
title = (TextView) view.findViewById(R.id.title);
count = (TextView) view.findViewById(R.id.count);
thumbnail = (ImageView) view.findViewById(R.id.thumbnail);
view.setOnClickListener(this);
}
@Override
public void onClick(View view) {
Log.d("myTag", "onClick " + getPosition());
}
}
public cardsAdapter(Context mContext, List<CardModel> albumList) {
this.mContext = mContext;
this.albumList = albumList;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.card_layout, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
CardModel album = albumList.get(position);
holder.title.setText(album.getCountry());
holder.count.setText(album.getSong());
// loading album cover using Glide library
Glide.with(mContext).load(album.getThumbnail()).into(holder.thumbnail);
holder.thumbnail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("myTag", "onClick ");
}
});
// holder.overflow.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// showPopupMenu(holder.overflow);
// }
// });
}
// /**
// * Showing popup menu when tapping on 3 dots
// */
// private void showPopupMenu(View view) {
// // inflate menu
// PopupMenu popup = new PopupMenu(mContext, view);
// MenuInflater inflater = popup.getMenuInflater();
// popup.setOnMenuItemClickListener(new MyMenuItemClickListener());
// popup.show();
// }
// /**
// * Click listener for popup menu items
// */
// class MyMenuItemClickListener implements PopupMenu.OnMenuItemClickListener {
//
// public MyMenuItemClickListener() {
// }
//
// @Override
// public boolean onMenuItemClick(MenuItem menuItem) {
// switch (menuItem.getItemId()) {
// case R.id.action_add_favourite:
// Toast.makeText(mContext, "Add to favourite", Toast.LENGTH_SHORT).show();
// return true;
// case R.id.action_play_next:
// Toast.makeText(mContext, "Play next", Toast.LENGTH_SHORT).show();
// return true;
// default:
// }
// return false;
// }
// }
@Override
public int getItemCount() {
return albumList.size();
}
}
答案 0 :(得分:1)
我能够使用您提供的Adapter
来创建RecyclerView
,其中的项目可以在缩略图和父项视图上点击。
查看您的XML card_layout
,确保您的ImageView没有android:clickable
到false
。发布您的card_layout
XML。
这是我使用的card_layout
:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="Album"
app:layout_constraintStart_toEndOf="@+id/thumbnail"
app:layout_constraintTop_toTopOf="@+id/thumbnail"/>
<TextView
android:id="@+id/count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Count"
app:layout_constraintStart_toEndOf="@+id/thumbnail"
app:layout_constraintTop_toBottomOf="@+id/title"/>
<ImageView
android:id="@+id/thumbnail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/ic_launcher"/>
</android.support.constraint.ConstraintLayout>