This question already has answers here:
How to return DataSnapshot value as a result of a method?
(5个答案)
在17天前关闭。
当我在RecyclerView中单击某个项目时,我试图获取每个位置的唯一键。
当我打开明细活动时,计数应递增1。我怎样才能做到这一点 ?
recyclerView上的所有数据都是从FirebaseDB加载的。这是屏幕截图:
正如我们在News节点中看到的那样,有唯一键。
当我单击适配器中的某个位置时,如何在烤面包机中获得钥匙。
这是我尝试过的:
要在firebase中将viewCount值增加1,请在cardView-onClick方法中编写一个事务:
(5个答案)
在17天前关闭。
当我在RecyclerView中单击某个项目时,我试图获取每个位置的唯一键。
当我打开明细活动时,计数应递增1。我怎样才能做到这一点 ?
recyclerView上的所有数据都是从FirebaseDB加载的。这是屏幕截图:
正如我们在News节点中看到的那样,有唯一键。
当我单击适配器中的某个位置时,如何在烤面包机中获得钥匙。
这是我尝试过的:
databaseReference = FirebaseDatabase.getInstance().getReference("News");
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
keyID = dataSnapshot.getKey();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
holder.view_counter.setText(homeModel.getViewCounts());
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context, "Key is " + keyID, Toast.LENGTH_SHORT).show();
// Intent intent = new Intent(context, DetailNews.class);
// intent.putExtra("POS", holder.getAdapterPosition());
// context.startActivity(intent);
}
});
}
最佳答案
跟着这些步骤:
在您的homeModel类中添加一个字符串“ key”字段。
在MainActivity的recyclerview-arraylist的侦听器中,用firebase键值填充此“键”字段。像这样:
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
newsArrayList.clear();
for(DataSnapshot data : dataSnapshot.getChildren()){
HomeModel news = data.getValue(HomeModel.class);
news.setKey(data.getKey());
newsArrayList.add(news);
}
customAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
要在firebase中将viewCount值增加1,请在cardView-onClick方法中编写一个事务:
String newsKey = newsArrayList.get(position).getKey();
ref = db.getReference("News").child(newsKey);
ref.runTransaction(new Transaction.Handler() {
@NonNull
@Override
public Transaction.Result doTransaction(@NonNull MutableData mutableData) {
HomeModel selectedNews= mutableData.getValue(HomeModel.class);
int p = selectedNews.getViewCount();
p++;
selectedNews.setViewCount(p);
mutableData.setValue(selectedNews);
return Transaction.success(mutableData);
}
@Override
public void onComplete(@Nullable DatabaseError databaseError, boolean b, @Nullable DataSnapshot dataSnapshot) {
}
});
关于java - 在没有FirebaseRecyclerAdapter的情况下如何增加Firebase中每个位置的viewCount? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62158987/
10-10 01:40