1、定义一个书籍类,包含书名和图片2、创建一个Activity,页面上放置RecylerView控件 3、在activity里面定义方法把20本书的信息创建出来4、定义RecylerView每一项所用的布局,布局用CardView显示书籍信息
时间: 2024-05-05 15:20:34 浏览: 43
book_finder:一个简单的原生 Android 应用程序,提供书籍推荐
1、好的,定义一个书籍类:
```
public class Book {
private String title;
private int image;
public Book(String title, int image) {
this.title = title;
this.image = image;
}
public String getTitle() {
return title;
}
public int getImage() {
return image;
}
}
```
2、创建一个Activity:
```
public class BookListActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private BookListAdapter adapter;
private List<Book> bookList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_book_list);
recyclerView = findViewById(R.id.recyclerView);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
bookList = new ArrayList<>();
createBookList();
adapter = new BookListAdapter(bookList);
recyclerView.setAdapter(adapter);
}
private void createBookList() {
for (int i = 1; i <= 20; i++) {
String title = "Book " + i;
int image = R.drawable.book_cover;
Book book = new Book(title, image);
bookList.add(book);
}
}
}
```
3、在activity中创建一个方法来添加20本书的信息:
我在上面的代码中已经添加了该方法,名字就是createBookList(),在这个方法里面就可以创建20本书的信息。
4、定义RecyclerView每项所用的布局,布局用CardView来显示书籍信息。在res/layout目录下创建一个新的布局文件book_item.xml:
```
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="8dp"
app:cardElevation="2dp"
app:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView"
android:layout_width="96dp"
android:layout_height="96dp"
android:padding="8dp"
android:src="@drawable/book_cover"
android:scaleType="centerCrop"/>
<TextView
android:id="@+id/titleTextView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="20sp"
android:textStyle="bold"
android:textColor="@color/black"
android:padding="16dp" />
</LinearLayout>
</androidx.cardview.widget.CardView>
```
这个布局文件包含一个LinearLayout,里面有一个ImageView显示书籍的图片,一个TextView显示书籍的标题。这个布局文件中使用了CardView来把每一项(即一个书籍)进行包含,这样每个书籍的信息就看起来非常整洁漂亮。
最后,在Adaper中去实现我们定义的布局文件book_item.xml,实现代码如下:
```
public class BookListAdapter extends RecyclerView.Adapter<BookListAdapter.BookViewHolder> {
private List<Book> bookList;
public class BookViewHolder extends RecyclerView.ViewHolder {
public TextView titleTextView;
public ImageView imageView;
public BookViewHolder(View view) {
super(view);
titleTextView = view.findViewById(R.id.titleTextView);
imageView = view.findViewById(R.id.imageView);
}
}
public BookListAdapter(List<Book> bookList) {
this.bookList = bookList;
}
@Override
public BookViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.book_item, parent, false);
return new BookViewHolder(itemView);
}
@Override
public void onBindViewHolder(BookViewHolder holder, int position) {
Book book = bookList.get(position);
holder.titleTextView.setText(book.getTitle());
holder.imageView.setImageResource(book.getImage());
}
@Override
public int getItemCount() {
return bookList.size();
}
}
```
这里使用一个ViewHolder来实现RecyclerView的重用,同时在onBindViewHolder()方法里面把每一项的信息进行展示。
以上就是实现RecyclerView展示书籍信息所需的全部代码,可以根据需求进行调整和优化。
阅读全文