如何确定与图像是点击适配器在安卓系统



我正试图弄清楚,当图像都在FrameLayout中,并且视图使用适配器进行了膨胀时,我如何确定用户点击了哪个图像

适配器的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_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ImageView
android:layout_width="match_parent"
android:layout_height="180dp"
android:layout_centerHorizontal="true"
app:srcCompat="@drawable/background" />

<ImageView
android:id="@+id/awayTeam"
android:layout_width="160dp"
android:layout_height="150dp"
android:layout_gravity="top|left" />
<ImageView
android:id="@+id/homeTeam"
android:layout_width="160dp"
android:layout_height="150dp"
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;
}
}

尝试使用以下代码

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

相关内容

最新更新