gpt4 book ai didi

java - 如何获取RecyclerView中点击项目的位置

转载 作者:行者123 更新时间:2023-12-02 03:21:26 26 4
gpt4 key购买 nike

我有一个 RecyclerView 来显示 ArrayList 的一些项目。我在该 RecyclerView 上有一个 OnClick,但我需要该项目在 RecyclerView 中的位置。

这是我的 ReciclerView 适配器:

public class MainAdapter extends RecyclerView.Adapter<MainAdapter.ViewHolder> implements View.OnClickListener {

private ArrayList<MyList> myList;
Context context;

public MainAdapter(ArrayList<MyList> myList, Context context) {
this.myList = myList;
this.context = context;
}

@NonNull
@Override
public MainAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.row, parent, false);

ViewHolder vh = new ViewHolder(v);

vh.title.setOnClickListener(this);
vh.title.setTag(viewType);

return vh;
}

@Override
public void onBindViewHolder(MainAdapter.ViewHolder holder, int position) {
holder.title.setText(myList.get(position).getTitle()); //Function getTitle is related to ArrayList<MyList>

}

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

public class ViewHolder extends RecyclerView.ViewHolder {

public TextView title;

public ViewHolder(@NonNull View itemView) {
super(itemView);

title = (TextView) itemView.findViewById(R.id.title);

}
}



@Override
public void onClick(View v) {
int itemPosition = (int) v.getTag();


switch (v.getId())
{
case R.id.title:
Toast.makeText(context, itemPosition, Toast.LENGTH_SHORT).show();
//itemPosition is always 0 and I don't know why

break;
}
}
}

我使用 Toast 来验证我是否获得了准确的位置,但是,无论我单击哪个项目,它总是给我位置 0。

感谢您的帮助!

最佳答案

onClick() 放入 ViewHolder 中,使用 getAdapterPosition() 获取位置并将其显示在 Toast 中,如下所示:

@Override
public void onClick(View view) {
int position = getAdapterPosition();
Toast.makeText(mContext, "Clicked Position"+position, Toast.LENGTH_SHORT).show();
}

关于java - 如何获取RecyclerView中点击项目的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56924395/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com