Создание приложения для голосования по базе данных - PullRequest
0 голосов
/ 27 мая 2018

Я любитель программирования на Java, а также в Android Studio, и мои знания о базах данных тоже не так уж хороши.

Теперь вопрос.
Как создать приложение, в котором пользователи могут голосовать за событие.Они могут выбирать между кнопками «да» и «нет».Под двумя кнопками находятся два 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>

Как я могу сохранить выбор пользователей в базе данных и обновить процент в реальном времени (и передать его двум TextViews)?

РЕДАКТИРОВАТЬ:

Хорошо, теперь у меня есть код для этого:

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 голосов
/ 04 июня 2018

Вот код.

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

Вот ссылка:

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

...