Android studio使用recycleview实现新闻列表的布局文件,并为 RecycleView 设置适配器和布局管理器。
时间: 2024-03-17 14:45:15 浏览: 118
Android Studio开发(二)使用RecyclerView
好的,下面是一个示例代码,用于实现一个简单的新闻列表:
1. 布局文件 `activity_main.xml`:
```xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
```
2. 新闻项的布局文件 `item_news.xml`:
```xml
<?xml version="1.0" encoding="utf-8"?>
<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">
<TextView
android:id="@+id/text_view_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/text_view_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:textSize="14sp" />
</LinearLayout>
```
3. 新闻项的数据类 `NewsItem.java`:
```java
public class NewsItem {
private String title;
private String content;
public NewsItem(String title, String content) {
this.title = title;
this.content = content;
}
public String getTitle() {
return title;
}
public String getContent() {
return content;
}
}
```
4. 适配器类 `NewsAdapter.java`:
```java
public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.NewsViewHolder> {
private List<NewsItem> newsList;
public NewsAdapter(List<NewsItem> newsList) {
this.newsList = newsList;
}
@NonNull
@Override
public NewsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_news, parent, false);
return new NewsViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull NewsViewHolder holder, int position) {
NewsItem item = newsList.get(position);
holder.titleTextView.setText(item.getTitle());
holder.contentTextView.setText(item.getContent());
}
@Override
public int getItemCount() {
return newsList.size();
}
public static class NewsViewHolder extends RecyclerView.ViewHolder {
public TextView titleTextView;
public TextView contentTextView;
public NewsViewHolder(View itemView) {
super(itemView);
titleTextView = itemView.findViewById(R.id.text_view_title);
contentTextView = itemView.findViewById(R.id.text_view_content);
}
}
}
```
5. 在 MainActivity 中设置 RecycleView 的适配器和布局管理器:
```java
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private NewsAdapter newsAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recycler_view);
// 设置布局管理器
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
// 设置适配器
List<NewsItem> newsList = generateNewsList(); // 生成新闻列表
newsAdapter = new NewsAdapter(newsList);
recyclerView.setAdapter(newsAdapter);
}
private List<NewsItem> generateNewsList() {
List<NewsItem> newsList = new ArrayList<>();
newsList.add(new NewsItem("新闻标题1", "新闻内容1"));
newsList.add(new NewsItem("新闻标题2", "新闻内容2"));
newsList.add(new NewsItem("新闻标题3", "新闻内容3"));
return newsList;
}
}
```
以上代码中,`generateNewsList()` 方法用于生成一个包含三个新闻项的列表。在 `onCreate()` 方法中,我们使用 `LinearLayoutManager` 设置 RecycleView 的布局管理器,使用 `NewsAdapter` 设置 RecycleView 的适配器,并将新闻列表传递给适配器。适配器中的 `onBindViewHolder()` 方法用于将每个新闻项的数据绑定到对应的视图上。
阅读全文