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("

//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("