制作数据库投票应用

时间:2018-05-27 18:52:27

标签: android database vote

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

现在的问题。
如何创建一个用户可以对某个事件进行投票的应用。他们可以选择" yes"和"不"纽扣。在这两个按钮下方有两个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,
  }
}

所以点击按钮会在数据库中创建一个新条目,但那就是它 我在互联网上做了一些研究......但是我太愚蠢了解它。

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

先谢谢你们!对不起我的英语不好。

1 个答案:

答案 0 :(得分:0)

这是代码。

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

这是链接:

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