gpt4 book ai didi

java - Recycler查看项目点击键

转载 作者:行者123 更新时间:2023-11-30 05:09:10 24 4
gpt4 key购买 nike

我想在 recyclerview 中获取 itemclick 的键值

firebaserecycler中是getRef(position).getKey();

没有 getref 方法,我该如何实现?

当前代码

适配器

public class IdAdapter extends RecyclerView.Adapter<IdAdapter.ChatViewHolder> {

private List<IdHelper> mUsers;
private String mId;
private static IdAdapter.ClickListener clickListener;
DatabaseReference mDatabaseReference;

public IdAdapter(List<IdHelper> mUsers) {
this.mUsers = mUsers;
}

public class ChatViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
public TextView mName;
public TextView mStatus;
public CircularImageView mImage;

public ChatViewHolder(View view) {
super(view);
view.setOnClickListener(this);
view.setOnLongClickListener(this);
mName = (TextView) view.findViewById(R.id.display_name);
mStatus = (TextView) view.findViewById(R.id.display_status);
mImage = (CircularImageView) view.findViewById(R.id.circleImageView);
mId = FirebaseAuth.getInstance().getCurrentUser().getUid();
mDatabaseReference = FirebaseDatabase.getInstance().getReference();

}

@Override
public void onClick(View v) {
clickListener.onItemClick(getAdapterPosition(), v);
}

@Override
public boolean onLongClick(View v) {
clickListener.onItemLongClick(getAdapterPosition(), v);
return false;
}
}

public void setOnItemClickListener(IdAdapter.ClickListener clickListener) {
IdAdapter.clickListener = clickListener;
}

public interface ClickListener {
void onItemClick(int position, View v);

void onItemLongClick(int position, View v);
}


@Override
public IdAdapter.ChatViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

View V = LayoutInflater.from(parent.getContext()).inflate(R.layout.custom_activity_id, parent, false);
return new IdAdapter.ChatViewHolder(V);
}

//BindViewHolder..................................................................................//
@Override
public void onBindViewHolder(IdAdapter.ChatViewHolder holder, int position) {
final IdHelper mHelper = mUsers.get(position);

holder.mName.setText(mHelper.getName());
holder.mStatus.setText(mHelper.getStatus());
Picasso.get().load(mHelper.getImage()).into(holder.mImage);

}

//ItemCount.......................................................................................//
@Override
public int getItemCount() {
return mUsers.size();
}
}

fragment

mAdapter.setOnItemClickListener(new IdAdapter.ClickListener() {
@Override
public void onItemClick(int position, View v) {
Intent intent = new Intent(getActivity(), Chat.class);
intent.putExtra("Recievers_Id", userId);
intent.putExtra("Recievers_Name", mName);
startActivity(intent);
}

@Override
public void onItemLongClick(int position, View v) {
Log.d("onItemLongClick", userId);
}
});

无论我点击哪个项目,它都显示相同的用户 ID。我意识到了这个问题,因为我根本没有使用位置,所以它只返回一个 id。如何根据点击获取id?

最佳答案

你做对了,只是你通过点击监听器从 View 持有者传递到 fragment 的位置没有被使用。

mAdapter.setOnItemClickListener(new IdAdapter.ClickListener() {
@Override
public void onItemClick(int position, View v) {
Intent intent = new Intent(getActivity(), Chat.class);
userId = mUsers.get(position).getUserId();
intent.putExtra("Recievers_Id", userId);
intent.putExtra("Recievers_Name", mName);
startActivity(intent);
}

@Override
public void onItemLongClick(int position, View v) {
Log.d("onItemLongClick", userId);
}
});

只需从 usersList 中获取特定位置的用户。

关于java - Recycler查看项目点击键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54004683/

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