//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("🎬 ").append(name).append(" (").append(year).append(")\n");
builder.append("⭐ Rating: ").append(rating).append("/5\n");
builder.append("📝 Review: ").append(review).append("\n\n");
} while (cursor.moveToNext());
} else {
builder.append("No reviews found.");
}
cursor.close();
movieDetailsTextView.setText(builder.toString());
}
@Override
protected void onDestroy() {
super.onDestroy();
database.close();
}
}
//mainactivity.xml