gpt4 book ai didi

java - RecyclerView.Adapter 中的 getRef(position).getKey()

转载 作者:太空宇宙 更新时间:2023-11-04 10:28:50 26 4
gpt4 key购买 nike

在 FirebaseRecyclerAdapter 中,我可以使用 getRef(position).getKey() 但我使用的是 RecyclerView.Adapter,并且我希望在用户单击复选框时获取 key 。这是我在 onBindViewHolder() 中的代码:

    @Override
public void onBindViewHolder(@NonNull UsersViewHolders holder, final int position) {
holder.setName(mUserNameList.get(position));
holder.setDesc(mUserDescList.get(position));
holder.setImage(mUserPicList.get(position));
holder.mCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

//TODO: get the key

}
});
}

是否可以获取RecyclerView.Adapter中的key?

最佳答案

我仅仅通过重构我的代码就设法解决了我自己的问题。

<强>1。在适配器类中,我为 itemClickListener 创建了一个接口(interface)

public interface RecyclerViewItemClick {

public void OnItemClickListener(UsersViewHolders holder, int position);

}

并创建一个全局

private RecyclerViewItemClick mListener;

将其添加到构造函数

public MessageListAdapter(RecyclerViewItemClick listener) {
this.mListener = listener;
}

<强>2。在 onBindViewHolder() 中,我传递了持有者和位置

@Override
public void onBindViewHolder(@NonNull final UsersViewHolders holder, final int position) {
holder.itemView.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {

mListener.OnItemClickListener(holder, position);

}

});
}

<强>3。在您的 Activity 中,添加此代码。为 ArrayList 声明一个全局变量来存储键并向 DatabaseReference 调用 addListenerForSingleValueEvent

//mUserDatabase is a DatabaseReference
mUserDatabase.addListenerForSingleValueEvent(new ValueEventListener() {

@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot datas : dataSnapshot.getChildren()) {
String uid = datas.getKey();

//mUserKey is an ArrayList<String>
mUserKey.add(uid);

}
}
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

<强>4。现在添加它来获取每个位置的 key

mAdapter = new MyAdapter(new MyAdapter.RecyclerViewItemClick() {

@Override
public void OnItemClickListener(PickMemberAdapter.UsersViewHolders holder, int position) {

String userKey = mUserKey.get(position);

if (!holder.mCheckBox.isChecked()) {
holder.mCheckBox.setChecked(true);

Toast.makeText(MainActivity.this, userKey, Toast.LENGTH_LONG).show();
} else {
holder.mCheckBox.setChecked(false);
Toast.makeText(MainActivity.this, userKey, Toast.LENGTH_LONG).show();
}

}

});

关于java - RecyclerView.Adapter 中的 getRef(position).getKey(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50283774/

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