要解决“Android RxJava Retrofit MVVM RecyclerView没有显示出来”的问题,可以按照以下步骤进行操作:
implementation 'io.reactivex.rxjava2:rxjava:2.x.x'
implementation 'io.reactivex.rxjava2:rxandroid:2.x.x'
implementation 'com.squareup.retrofit2:retrofit:2.x.x'
implementation 'com.squareup.retrofit2:converter-gson:2.x.x'
implementation 'androidx.recyclerview:recyclerview:1.x.x'
activity_main.xml
的布局文件:
item_layout.xml
的布局文件:
ItemAdapter.java
的适配器类:public class ItemAdapter extends RecyclerView.Adapter {
private List- itemList;
public ItemAdapter(List
- itemList) {
this.itemList = itemList;
}
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
return new ItemViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
Item item = itemList.get(position);
holder.titleTextView.setText(item.getTitle());
holder.descriptionTextView.setText(item.getDescription());
}
@Override
public int getItemCount() {
return itemList.size();
}
public static class ItemViewHolder extends RecyclerView.ViewHolder {
TextView titleTextView;
TextView descriptionTextView;
public ItemViewHolder(@NonNull View itemView) {
super(itemView);
titleTextView = itemView.findViewById(R.id.titleTextView);
descriptionTextView = itemView.findViewById(R.id.descriptionTextView);
}
}
}
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private ItemAdapter itemAdapter;
private List- itemList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
itemAdapter = new ItemAdapter(itemList);
recyclerView.setAdapter(itemAdapter);
// 使用 RxJava 和 Retrofit 获取数据
ApiService apiService = RetrofitClient.getInstance().create(ApiService.class);
apiService.getItems()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer
>() {
@Override
public void onSubscribe(Disposable d) {
// 在此处处理订阅事件
}
@Override
public void onNext(List- items) {
// 在此处处理接收到的数据
itemList.clear();
itemList.addAll(items);