我想检索类似的计数器,并希望在firebase数据库上传结果。如果另一个用户喜欢这个帖子,那么like计数器应该增加值,而不是从0开始。
这是我的databaseReference看起来像DatabaseLOLCounter.child(post_key).child(mAuth.getCurrentUser().getUid()).child("counter").setValue('like counter value here');
这是我的viewHolder
viewHolder.mLOL.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
processLOL=true;
DatabaseFacepalm.child(post_key).child(mAuth.getCurrentUser().getUid()).removeValue();
DatabaseAngry.child(post_key).child(mAuth.getCurrentUser().getUid()).removeValue();
DatabaseNeutral.child(post_key).child(mAuth.getCurrentUser().getUid()).removeValue();
DatabaseLOL.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (processLOL)
{
if(dataSnapshot.child(post_key).hasChild(mAuth.getCurrentUser().getUid()))
{
//Toast.makeText(MainActivity.this,mAuth.getCurrentUser().getUid(),Toast.LENGTH_LONG).show();
//if already reacted
//DatabaseLOLCounter.setValue(Count = Count - 1 );
updateLOLCounter(false,post_key);
DatabaseLOL.child(post_key).child(mAuth.getCurrentUser().getUid()).removeValue();
processLOL=false;
}
else
{
//if no react
updateLOLCounter(true,post_key);
//DatabaseLOLCounter.setValue(Count = Count + 1 );
DatabaseLOL.child(post_key).child(mAuth.getCurrentUser().getUid()).setValue("lol");
processLOL=false;
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
我的updateLike计数器看起来像这样(从某处复制)
private void updateLOLCounter(final boolean increment, final String post_key) {
DatabaseLOLCounter.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
if (mutableData.getValue() != null) {
int value = mutableData.getValue(Integer.class);
if(increment)
{
value++;
} else {
value--;
}
mutableData.setValue(value);
}
return Transaction.success(mutableData);
}
现在该怎么办才能在firebase上设置类似的计数器。
答案 0 :(得分:0)
您可以使用简单的计数器,但应用程序关闭后,计数器的值将返回0。因此,使用Firebase事务将是更好的选择,因为数据不会因并发更新而损坏。
在OnCreate之前添加此行。
server {
listen 80;
listen 443 ssl;
server_name _;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location / {
proxy_pass http://api-server:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /public {
root /usr/local/var/www;
}
}
现在在OnClicklistener下添加以下代码。
private Firebase LOLCounter;
答案 1 :(得分:0)
它应该声明为a并且所有firebase客户端必须在
之前提及<li><a href="edit/" target="_self">New</a></li>
但是我们需要考虑所有东西都在适配器下,以便将它与回收视图适配器
集成在一起
https://localhost:3000/1/#/edit/
和按钮的这些变量将取消
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycleview_news_feed, parent, false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}