Как сохранить рейтинг пользователя и комментарий при нажатии кнопки «Отправить»? - PullRequest
0 голосов
/ 15 апреля 2020

Я начинающий программист и работаю над приложением, которое отображает некоторые элементы. Пользователь может щелкнуть любой элемент, прочитать его описание, а также оценить и прокомментировать его. Я создал панель рейтинга и раздел комментариев (а также текстовое представление, которое показывает средний рейтинг).

Я хочу, чтобы рейтинг и комментарий каждого пользователя были сохранены при нажатии кнопки mSendFeedback. Как я могу это сделать?

Java файл страницы товара

public class ItemDemo extends AppCompatActivity {
    RatingBar mRatingBar;
    TextView mRatingScale;
    TextView averageRating;
    EditText mFeedback;
    Button mSendFeedback;
    int i=0;
    float total = 0;
    float average;

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

        mRatingBar = (RatingBar) findViewById(R.id.ratingBar);
        mRatingScale = (TextView) findViewById(R.id.tvRatingScale);
        mFeedback = (EditText) findViewById(R.id.etFeedback);
        mSendFeedback = (Button) findViewById(R.id.btnSubmit);


        mRatingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
            @Override
            public void onRatingChanged(RatingBar ratingBar, float v, boolean b) {
                mRatingScale.setText(String.valueOf(v));
                switch ((int) ratingBar.getRating()) {
                    case 1:
                        mRatingScale.setText("Bad");
                        break;
                    case 2:
                        mRatingScale.setText("Okay");
                        break;
                    case 3:
                        mRatingScale.setText("Not bad");
                        break;
                    case 4:
                        mRatingScale.setText("Good enough");
                        break;
                    case 5:
                        mRatingScale.setText("Perfect");
                        break;
                    default:
                        mRatingScale.setText("");
                }
            }
        });

        mSendFeedback.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (mRatingBar.getRating() == 0.0) {
                    Toast.makeText(EventDemo.this, "Please enter a rating", Toast.LENGTH_LONG).show();
                } else {
                    mFeedback.setText("");
                    mRatingBar.setRating(0);
                    i=i+1;
                    total += mRatingBar.getRating();
                    average = total /i ;
                    Toast.makeText(EventDemo.this, "Thanks for the rating", Toast.LENGTH_SHORT).show();
                }
            }
        });
        TextView textView = (TextView) findViewById(R.id.averageRating);
        textView.setText("average rating: " +average+"/5 stars");
    }



}

XML файл страницы товара

 <ImageView
                android:id="@+id/imageView4"
                android:layout_width="wrap_content"
                android:layout_height="177dp"
                app:srcCompat="@drawable/item1" />

            <TextView
                android:id="@+id/textView11"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/imageView4"
                android:layout_marginTop="19dp"
                android:gravity="center|center_horizontal"
                android:text="Item 1"
                android:textAllCaps="false"
                android:textAppearance="@style/Base.TextAppearance.AppCompat.Large"
                android:textColor="@color/design_default_color_primary_dark"
                android:textColorHighlight="@color/colorPrimaryDark"
                android:textColorLink="@color/design_default_color_primary"
                android:textStyle="bold"
                tools:layout_centerHorizontal="true" />

            <TextView
                android:id="@+id/textView12"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/textView11"
                android:layout_marginTop="16dp"
                android:gravity="center"
                android:text="This is the description of item 1"
                android:textColor="@color/colorAccent"
                android:textStyle="italic"
                tools:layout_centerHorizontal="true" />

            <RatingBar
                android:id="@+id/ratingBar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/textView12"
                android:layout_gravity="center"
                android:numStars="5"
                android:stepSize="1" />

            <TextView
                android:id="@+id/tvRatingScale"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/ratingBar"
                android:layout_gravity="center"
                android:layout_marginTop="10dp"
                android:textSize="16sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/averageRating"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/tvRatingScale"
                android:layout_gravity="center"
                android:layout_marginTop="10dp"
                android:textSize="16sp"
                android:textStyle="bold" />

            <EditText
                android:id="@+id/etFeedback"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/averageRating"
                android:gravity="top"
                android:hint="add a comment"
                android:inputType="textMultiLine"
                android:lines="5" />

            <Button
                android:id="@+id/btnSubmit"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginTop="10dp"
                android:background="#e57373"
                android:text="Submit Feedback"
                android:textColor="@android:color/white" />

1 Ответ

0 голосов
/ 15 апреля 2020

Было бы неплохо, если бы вы могли упомянуть, где вы хотите сохранить его? Локально или на каком-нибудь сервере / облаке? Я предполагаю, что второй вариант, поскольку цель рейтинга, данного пользователем, заключается в том, что он должен быть виден и другим пользователям.

Если это так, я бы предложил использовать Firebase База данных реального времени для него.

Что вам нужно сделать, это создать для него класс, например:

class Rating {
    int value;
    Date date;
}

Вы должны сохранить оценку, данную в объекте вышеупомянутого класса , Затем вы можете сохранить эти объекты в базе данных Firebase Realtime.

Если у вас есть процесс регистрации пользователя, сохраните также и идентификатор пользователя, чтобы избежать дублирования оценок.

Использование Firebase чрезвычайно просто и удобно для такие цели. Следуя их примеру с плагином Android Studio, вы сделаете это за несколько минут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...