基本結構
-
Movie類應該包含電影的基本資訊。假設我們需要儲存以下資訊:
-
電影標題(title)
-
電影描述(description)
-
釋出年份(releaseYear)
-
評分(rating)
-
海報URL(posterUrl)
-
-
我們將為這些屬性建立一個類!
建立Movie類
-
首先定義Movie類並新增相應的屬性、構造方法和getter/setter方法:
public class Movie { // 電影標題 private String title; // 電影描述 private String description; // 釋出年份 private int releaseYear; // 評分 private double rating; // 海報URL private String posterUrl; // 構造方法,用於初始化Movie物件 public Movie(String title, String description, int releaseYear, double rating, String posterUrl) { this.title = title; // 設定電影標題 this.description = description; // 設定電影描述 this.releaseYear = releaseYear; // 設定釋出年份 this.rating = rating; // 設定評分 this.posterUrl = posterUrl; // 設定海報URL } // 獲取電影標題 public String getTitle() { return title; } // 設定電影標題 public void setTitle(String title) { this.title = title; } // 獲取電影描述 public String getDescription() { return description; } // 設定電影描述 public void setDescription(String description) { this.description = description; } // 獲取釋出年份 public int getReleaseYear() { return releaseYear; } // 設定釋出年份 public void setReleaseYear(int releaseYear) { this.releaseYear = releaseYear; } // 獲取評分 public double getRating() { return rating; } // 設定評分 public void setRating(double rating) { this.rating = rating; } // 獲取海報URL public String getPosterUrl() { return posterUrl; } // 設定海報URL public void setPosterUrl(String posterUrl) { this.posterUrl = posterUrl; } }
Movie類的使用
-
建立 Movie 物件的例項以及設定其屬性:
// 建立一個Movie物件例項 Movie inception = new Movie( "Inception", // 電影標題 "A thief who steals corporate secrets through the use of dream-sharing technology is given the inverse task of planting an idea into the mind of a C.E.O.", // 電影描述 2010, // 釋出年份 8.8, // 評分 "https://example.com/inception_poster.jpg" // 海報URL );
-
顯示電影資訊
-
在實際的 Android 應用中,我們通常會從 API 獲取電影資訊,並將這些資訊顯示在 UI 上。以下是一個簡單的示例,演示如何在 RecyclerView 中顯示電影列表
-
建立主佈局檔案定義一個 RecyclerView 用於顯示電影列表:
res/layout/activity_main.xml
<!-- res/layout/activity_main.xml --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- 定義一個RecyclerView,用於顯示電影列表 --> <RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="16dp" android:scrollbars="vertical" /> </LinearLayout>
-
建立電影項佈局檔案定義每個電影項在 RecyclerView 中的顯示方式:
res/layout/item_movie.xml
<!-- res/layout/item_movie.xml --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="16dp"> <ImageView android:id="@+id/posterImageView" android:layout_width="match_parent" android:layout_height="200dp" android:scaleType="centerCrop" /> <TextView android:id="@+id/titleTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="18sp" android:textStyle="bold" android:paddingTop="8dp" /> <TextView android:id="@+id/descriptionTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="14sp" android:paddingTop="4dp" /> <TextView android:id="@+id/releaseYearTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="12sp" android:paddingTop="4dp" /> <TextView android:id="@+id/ratingTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="12sp" android:paddingTop="4dp" /> </LinearLayout>
-
建立 RecyclerView.Adapter 類來繫結 Movie 資料:
MovieAdapter.java
public class MovieAdapter extends RecyclerView.Adapter<MovieAdapter.MovieViewHolder> { // 電影列表 private List<Movie> movieList; // 構造方法,傳入電影列表 public MovieAdapter(List<Movie> movieList) { this.movieList = movieList; // 初始化電影列表 } // 建立 ViewHolder @Override public MovieViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // 載入電影項佈局 View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_movie, parent, false); return new MovieViewHolder(view); // 建立並返回 ViewHolder } // 繫結 ViewHolder @Override public void onBindViewHolder(MovieViewHolder holder, int position) { Movie movie = movieList.get(position); // 獲取當前電影 holder.bind(movie); // 繫結電影資料到 ViewHolder } // 獲取電影列表大小 @Override public int getItemCount() { return movieList.size(); } // 以上設定了形參的傳參規則 // 以下自定義 ViewHolder 類:包含具體的實現方法 public static class MovieViewHolder extends RecyclerView.ViewHolder { // 定義 UI 元素 private TextView titleTextView; private TextView descriptionTextView; private TextView releaseYearTextView; private TextView ratingTextView; private ImageView posterImageView; // 構造方法,初始化 UI 元素 public MovieViewHolder(View itemView) { super(itemView); titleTextView = itemView.findViewById(R.id.titleTextView); // 電影標題 TextView descriptionTextView = itemView.findViewById(R.id.descriptionTextView); // 電影描述 TextView releaseYearTextView = itemView.findViewById(R.id.releaseYearTextView); // 釋出年份 TextView ratingTextView = itemView.findViewById(R.id.ratingTextView); // 評分 TextView posterImageView = itemView.findViewById(R.id.posterImageView); // 海報 ImageView } // 繫結電影資料到 UI 元素 public void bind(Movie movie) { titleTextView.setText(movie.getTitle()); // 設定電影標題 descriptionTextView.setText(movie.getDescription()); // 設定電影描述 releaseYearTextView.setText(String.valueOf(movie.getReleaseYear())); // 設定釋出年份 ratingTextView.setText(String.valueOf(movie.getRating())); // 設定評分 // 載入海報圖片,可以使用 Glide 或 Picasso 庫 Glide.with(itemView.getContext()).load(movie.getPosterUrl()).into(posterImageView); // 載入海報圖片 } } }
-
啟動類中設定 RecyclerView:在 Activity 或 Fragment 中設定 RecyclerView,並繫結 MovieAdapter
public class MainActivity extends AppCompatActivity { // RecyclerView 物件 private RecyclerView recyclerView; // MovieAdapter 物件 private MovieAdapter movieAdapter; // 電影列表 private List<Movie> movieList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 設定佈局檔案 recyclerView = findViewById(R.id.recyclerView); // 獲取 RecyclerView 物件 recyclerView.setLayoutManager(new LinearLayoutManager(this)); // 設定佈局管理器 movieList = new ArrayList<Movie>(); // 初始化電影列表 // 新增一些示例電影資料 movieList.add(new Movie("Inception", "A thief who steals corporate secrets...", 2010, 8.8, "https://example.com/inception_poster.jpg")); movieList.add(new Movie("The Dark Knight", "When the menace known as the Joker emerges...", 2008, 9.0, "https://example.com/dark_knight_poster.jpg")); movieAdapter = new MovieAdapter(movieList); // 初始化 MovieAdapter recyclerView.setAdapter(movieAdapter); // 設定 Adapter } }
-
-
以上是一個基本的示例,實際應用中可以根據需求進行擴充套件和最佳化,例如從 API 獲取資料、實現搜尋功能等
-