Movie Review

//main_activity.java package com.example.moviereview; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.*; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private EditText movieNameEditText, movieYearEditText, movieReviewEditText; private RatingBar movieRatingBar; private Button saveReviewButton, viewReviewsButton; private TextView detailsHeaderTextView, movieDetailsTextView; private ScrollView movieDetailsScrollView; private LinearLayout addReviewLayout; private SQLiteDatabase database; private static final String DATABASE_NAME = "MovieReviews"; private static final String TABLE_REVIEWS = "reviews"; private static final String COLUMN_NAME = "name"; private static final String COLUMN_YEAR = "year"; private static final String COLUMN_RATING = "rating"; private static final String COLUMN_REVIEW = "review"; private boolean isInViewMode = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); movieNameEditText = findViewById(R.id.movieNameEditText); movieYearEditText = findViewById(R.id.movieYearEditText); movieReviewEditText = findViewById(R.id.movieReviewEditText); movieRatingBar = findViewById(R.id.movieRatingBar); saveReviewButton = findViewById(R.id.saveReviewButton); viewReviewsButton = findViewById(R.id.viewReviewsButton); detailsHeaderTextView = findViewById(R.id.detailsHeaderTextView); movieDetailsTextView = findViewById(R.id.movieDetailsTextView); movieDetailsScrollView = findViewById(R.id.movieDetailsScrollView); addReviewLayout = findViewById(R.id.addReviewLayout); database = openOrCreateDatabase(DATABASE_NAME, MODE_PRIVATE, null); database.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_REVIEWS + " (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_NAME + " TEXT UNIQUE, " + COLUMN_YEAR + " INTEGER, " + COLUMN_RATING + " REAL, " + COLUMN_REVIEW + " TEXT)"); saveReviewButton.setOnClickListener(v -> saveMovieReview()); viewReviewsButton.setOnClickListener(v -> toggleViewMode()); } private void saveMovieReview() { String name = movieNameEditText.getText().toString().trim(); String yearStr = movieYearEditText.getText().toString().trim(); String review = movieReviewEditText.getText().toString().trim(); float rating = movieRatingBar.getRating(); if (name.isEmpty() || yearStr.isEmpty()) { Toast.makeText(this, "Please enter movie name and year", Toast.LENGTH_SHORT).show(); return; } try { int year = Integer.parseInt(yearStr); ContentValues values = new ContentValues(); values.put(COLUMN_NAME, name); values.put(COLUMN_YEAR, year); values.put(COLUMN_RATING, rating); values.put(COLUMN_REVIEW, review); long id = database.insertWithOnConflict(TABLE_REVIEWS, null, values, SQLiteDatabase.CONFLICT_REPLACE); if (id == -1) { Toast.makeText(this, "Error saving review", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "Review saved", Toast.LENGTH_SHORT).show(); } movieNameEditText.setText(""); movieYearEditText.setText(""); movieReviewEditText.setText(""); movieRatingBar.setRating(0); } catch (NumberFormatException e) { Toast.makeText(this, "Invalid year", Toast.LENGTH_SHORT).show(); } } private void toggleViewMode() { isInViewMode = !isInViewMode; if (isInViewMode) { addReviewLayout.setVisibility(View.GONE); detailsHeaderTextView.setVisibility(View.VISIBLE); movieDetailsScrollView.setVisibility(View.VISIBLE); viewReviewsButton.setText("Add Review"); displayAllReviews(); } else { addReviewLayout.setVisibility(View.VISIBLE); detailsHeaderTextView.setVisibility(View.GONE); movieDetailsScrollView.setVisibility(View.GONE); viewReviewsButton.setText("View Reviews"); } } private void displayAllReviews() { Cursor cursor = database.rawQuery("SELECT * FROM " + TABLE_REVIEWS + " ORDER BY " + COLUMN_NAME, null); StringBuilder builder = new StringBuilder(); if (cursor.moveToFirst()) { do { String name = cursor.getString(cursor.getColumnIndexOrThrow(COLUMN_NAME)); int year = cursor.getInt(cursor.getColumnIndexOrThrow(COLUMN_YEAR)); float rating = cursor.getFloat(cursor.getColumnIndexOrThrow(COLUMN_RATING)); String review = cursor.getString(cursor.getColumnIndexOrThrow(COLUMN_REVIEW)); builder.append("

Apr 16, 2025 - 04:56
 0
Movie Review

//main_activity.java
package com.example.moviereview;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.*;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

private EditText movieNameEditText, movieYearEditText, movieReviewEditText;
private RatingBar movieRatingBar;
private Button saveReviewButton, viewReviewsButton;
private TextView detailsHeaderTextView, movieDetailsTextView;
private ScrollView movieDetailsScrollView;
private LinearLayout addReviewLayout;

private SQLiteDatabase database;

private static final String DATABASE_NAME = "MovieReviews";
private static final String TABLE_REVIEWS = "reviews";
private static final String COLUMN_NAME = "name";
private static final String COLUMN_YEAR = "year";
private static final String COLUMN_RATING = "rating";
private static final String COLUMN_REVIEW = "review";

private boolean isInViewMode = false;

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

    movieNameEditText = findViewById(R.id.movieNameEditText);
    movieYearEditText = findViewById(R.id.movieYearEditText);
    movieReviewEditText = findViewById(R.id.movieReviewEditText);
    movieRatingBar = findViewById(R.id.movieRatingBar);
    saveReviewButton = findViewById(R.id.saveReviewButton);
    viewReviewsButton = findViewById(R.id.viewReviewsButton);
    detailsHeaderTextView = findViewById(R.id.detailsHeaderTextView);
    movieDetailsTextView = findViewById(R.id.movieDetailsTextView);
    movieDetailsScrollView = findViewById(R.id.movieDetailsScrollView);
    addReviewLayout = findViewById(R.id.addReviewLayout);

    database = openOrCreateDatabase(DATABASE_NAME, MODE_PRIVATE, null);

    database.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_REVIEWS + " (" +
            "id INTEGER PRIMARY KEY AUTOINCREMENT, " +
            COLUMN_NAME + " TEXT UNIQUE, " +
            COLUMN_YEAR + " INTEGER, " +
            COLUMN_RATING + " REAL, " +
            COLUMN_REVIEW + " TEXT)");

    saveReviewButton.setOnClickListener(v -> saveMovieReview());
    viewReviewsButton.setOnClickListener(v -> toggleViewMode());
}

private void saveMovieReview() {
    String name = movieNameEditText.getText().toString().trim();
    String yearStr = movieYearEditText.getText().toString().trim();
    String review = movieReviewEditText.getText().toString().trim();
    float rating = movieRatingBar.getRating();

    if (name.isEmpty() || yearStr.isEmpty()) {
        Toast.makeText(this, "Please enter movie name and year", Toast.LENGTH_SHORT).show();
        return;
    }

    try {
        int year = Integer.parseInt(yearStr);

        ContentValues values = new ContentValues();
        values.put(COLUMN_NAME, name);
        values.put(COLUMN_YEAR, year);
        values.put(COLUMN_RATING, rating);
        values.put(COLUMN_REVIEW, review);

        long id = database.insertWithOnConflict(TABLE_REVIEWS, null, values, SQLiteDatabase.CONFLICT_REPLACE);

        if (id == -1) {
            Toast.makeText(this, "Error saving review", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, "Review saved", Toast.LENGTH_SHORT).show();
        }

        movieNameEditText.setText("");
        movieYearEditText.setText("");
        movieReviewEditText.setText("");
        movieRatingBar.setRating(0);

    } catch (NumberFormatException e) {
        Toast.makeText(this, "Invalid year", Toast.LENGTH_SHORT).show();
    }
}

private void toggleViewMode() {
    isInViewMode = !isInViewMode;

    if (isInViewMode) {
        addReviewLayout.setVisibility(View.GONE);
        detailsHeaderTextView.setVisibility(View.VISIBLE);
        movieDetailsScrollView.setVisibility(View.VISIBLE);
        viewReviewsButton.setText("Add Review");
        displayAllReviews();
    } else {
        addReviewLayout.setVisibility(View.VISIBLE);
        detailsHeaderTextView.setVisibility(View.GONE);
        movieDetailsScrollView.setVisibility(View.GONE);
        viewReviewsButton.setText("View Reviews");
    }
}

private void displayAllReviews() {
    Cursor cursor = database.rawQuery("SELECT * FROM " + TABLE_REVIEWS + " ORDER BY " + COLUMN_NAME, null);
    StringBuilder builder = new StringBuilder();

    if (cursor.moveToFirst()) {
        do {
            String name = cursor.getString(cursor.getColumnIndexOrThrow(COLUMN_NAME));
            int year = cursor.getInt(cursor.getColumnIndexOrThrow(COLUMN_YEAR));
            float rating = cursor.getFloat(cursor.getColumnIndexOrThrow(COLUMN_RATING));
            String review = cursor.getString(cursor.getColumnIndexOrThrow(COLUMN_REVIEW));

            builder.append("