制作数据库投票应用程序

Making a database-voting app

我是 Java 编程和 Android Studio 的业余爱好者,我对数据库的了解也不是那么好。

现在是问题。
我怎样才能制作一个用户可以对事件进行投票的应用程序。他们可以在 "yes" 和 "no" 按钮之间进行选择。在两个按钮下方有两个 TextView,显示用户选择的平均值。

布局如下

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".TabCommunity">

<RelativeLayout
    android:id="@+id/voting"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/question"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="100dp"
        android:gravity="center"
        android:text="Do you think the event is good?"
        android:textSize="20dp"
        android:textStyle="bold" />

    <Button
        android:id="@+id/btnYes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_centerVertical="true"
        android:layout_marginStart="50dp"
        android:background="@color/colorPrimaryDark"
        android:fontFamily="casual"
        android:padding="15dp"
        android:text="YES"
        android:textColor="#fff"
        android:textSize="20dp"
        android:textStyle="bold" />

    <Button
        android:id="@+id/btnNo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_centerVertical="true"
        android:layout_marginEnd="50dp"
        android:background="@color/colorPrimaryDark"
        android:fontFamily="casual"
        android:padding="15dp"
        android:text="NO"
        android:textColor="#fff"
        android:textSize="20dp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/com_yes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:layout_marginBottom="170dp"
        android:layout_marginStart="120dp"
        android:text="- %"
        android:textSize="16dp"
        android:textStyle="italic" />

    <TextView
        android:id="@+id/com_no"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignTop="@+id/com_yes"
        android:layout_marginEnd="102dp"
        android:text="- %"
        android:textSize="16dp"
        android:textStyle="italic" />

</RelativeLayout>

</FrameLayout>

如何在数据库中保护用户的选择,并实时更新百分比(并将其提供给两个 TextView)?

编辑:

好的,现在我有了它的代码:

public class Location extends Activity {

public static String[] bet = new String[] {"Yes", "No"};

private Button btn_yes, btn_no;
private TextView comY, comN;
private View voteView;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_blank);

    btn_yes = (Button) findViewById(R.id.btnYes);

    btn_yes.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            FirebaseDatabase database = FirebaseDatabase.getInstance();
            DatabaseReference myRef = database.getReference("VoteYes");

            myRef.setValue("+");
        }
    });

    btn_no = (Button) findViewById(R.id.btnNo);

    btn_no.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            FirebaseDatabase database = FirebaseDatabase.getInstance();
            DatabaseReference myRef = database.getReference("VoteNo");

            myRef.setValue("+");
        }
    });
}

在 Firebase 数据库中,代码如下所示:

{
 "rules": {
   ".read": true,
   ".write": true,
  }
}

所以单击按钮会在数据库中创建一个新条目,仅此而已。
我在互联网上做了一些研究......但我太笨了无法理解它。

我如何编辑代码,让每个用户都有一票,数据库增加是或否的一方?

提前谢谢大家!对不起我的英语不好。

这是代码。

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 
public static String[] bet = new String[] {"YES", "NO"};

private Button btn_yes, btn_no;
private TextView comY, comN;
private View voteView;

FirebaseDatabase database;
DatabaseReference myRefYes, myRefNo;
long oldYes, oldNo;
int flag = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

btn_yes = (Button) voteView.findViewById(R.id.btnYes);
btn_yes.setOnClickListener(this);
btn_no = (Button) voteView.findViewById(R.id.btnNo);
btn_no.setOnClickListener(this);

myRefYes = database.getReference("ForecastVoteYes");
myRefYes.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
          oldYes = dataSnapshot.getValue(long.class);
    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
    }
});

myRefNo = database.getReference("ForecastVoteNo");
myRefYes.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
         oldYes = dataSnapshot.getValue(long.class);
    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
    }
});

}




public void onClick(View v) {
switch (v.getId()){
    case R.id.btnYes:
        if ( flag == 0){
            oldYes++;
            myRefYes.setValue(oldYes);
            flag = 1;
        }
        break;

    case R.id.btnNo:
        if ( flag == 0){
            oldNo++;
            myRefYes.setValue(oldNo);
            flag = 1;
        }
        break;
}
}
}

感谢来自 Androidpit.de

的 Jokel

这是link:

https://www.androidpit.de/forum/772740/eine-datenbank-voting-app-erstellen#3174286