如何确定图像是在 Android 的适配器中单击
Posted
技术标签:
【中文标题】如何确定图像是在 Android 的适配器中单击【英文标题】:How to determine with image was click in Adapter in Android 【发布时间】:2021-08-29 09:56:57 【问题描述】:我试图弄清楚当图像都在 FrameLayout 中并且视图被适配器膨胀时,我如何确定用户点击了哪个图像
Adapter 的 setItemClickListener 如下:(pos 用于确定数组中的哪个元素被点击,因此列表中的第一项为 0,依此类推...):
holder.setItemClickListener(new ItemClickListener()
@Override
public void onItemClick(View v, int pos)
switch (pos)
case 0:
// First item was clicked
break;
case 1:
// Second item was clicked
break;
Toast.makeText(v.getContext(), "Clicked list item = " + pos, Toast.LENGTH_SHORT).show();
);
以下是保存项目列表的布局:
<FrameLayout 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:id="@+id/rootView"
android:layout_
android:layout_
android:orientation="vertical">
<androidx.cardview.widget.CardView
android:layout_
android:layout_ >
<ImageView
android:layout_
android:layout_
android:layout_centerHorizontal="true"
app:srcCompat="@drawable/background" />
<ImageView
android:id="@+id/awayTeam"
android:layout_
android:layout_
android:layout_gravity="top|left" />
<ImageView
android:id="@+id/homeTeam"
android:layout_
android:layout_
android:layout_gravity="top|right"
android:scaleX="-1" />
</androidx.cardview.widget.CardView>
</FrameLayout>
</LinearLayout>
如何确定用户在列表中的位置单击了哪个 ImageView?
更新:
class GameViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
private ItemClickListener mListener;
private ImageView awayTeamImageView, homeTeamImageView;
public GameViewHolder(View itemView)
super(itemView);
awayTeamImageView = itemView.findViewById(R.id.awayTeam);
homeTeamImageView = itemView.findViewById(R.id.homeTeam);
itemView.setOnClickListener(this);
Override
public void onClick(View v)
this.mListener.onItemClick(v, getLayoutPosition());
public void setItemClickListener(ItemClickListener listener)
this.mListener = listener;
【问题讨论】:
【参考方案1】:试试下面的代码
holder.setItemClickListener(new ItemClickListener()
@Override
public void onItemClick(View v, int pos)
switch (v.getId())
case R.id.awayTeam:
// click on image awayTeam
break;
case R.id.homeTeam:
// click on image homeTeam
break;
Toast.makeText(v.getContext(), "Clicked list item = " + pos, Toast.LENGTH_SHORT).show();
);
// Also update your holder code
public GameViewHolder(@NonNull View itemView)
super(itemView);
itemView.setOnClickListener(this);
awayTeamImageView = itemView.findViewById(R.id.awayTeam);
homeTeamImageView = itemView.findViewById(R.id.homeTeam);
awayTeamImageView.setOnClickListener(this);
homeTeamImageView.setOnClickListener(this);
【讨论】:
我试过了;v.getId()
总是返回 -1 我不明白为什么!?
我想我已经添加了您要求的内容。以上是关于如何确定图像是在 Android 的适配器中单击的主要内容,如果未能解决你的问题,请参考以下文章
在android中单击相机后,无需按确定按钮即可从相机获取图像