我编写了一个adapter和activity代码来获取数据。代码如下所示。
适配器:
private List<DellTransportList> customers;
public DellTransportAdapter(List<DellTransportList> list) {
this.customers = list;
}
@NonNull
@Override
public DellTransportAdapter.MyDriveViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.drive_recycler_item,parent,false);
return new MyDriveViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MyDriveViewHolder holder, int position) {
DellTransportList customer = customers.get(holder.getAdapterPosition());
TextView dataText = holder.mEmployeeId;
TextView dataName = holder.mName;
dataText.setText(customer.getEmployeeid());
dataName.setText(customer.getName());
}
@Override
public int getItemCount() {
return customers.size();
}
public class MyDriveViewHolder extends RecyclerView.ViewHolder {
public TextView mName, mEmployeeId;
public MyDriveViewHolder(View view) {
super(view);
mName = view.findViewById(R.id.mtv_view);
mEmployeeId = view.findViewById(R.id.mtv_data_view);
}
} 活性:
// RecyclerView
mRecycler = findViewById(R.id.rv_drive);
mRecycler.setHasFixedSize(true);
mApiInterface = RetrofitInstance.getRetrofitInstance().create(DellTransportApiInterface.class);
mList = new ArrayList();
Call<List<DellTransportList>> call = mApiInterface.getcustomerName();
call.enqueue(new Callback<List<DellTransportList>>() {
@Override
public void onResponse(@NotNull Call<List<DellTransportList>> call, @NotNull Response<List<DellTransportList>> response) {
mList = response.body();
mAdapter = new DellTransportAdapter(mList);
mRecycler.setAdapter(mAdapter);
mRecycler.setLayoutManager(new LinearLayoutManager(DriveActivity.this));
mAdapter.notifyDataSetChanged();
// Toast.makeText(getApplicationContext(),response,Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(@NotNull Call<List<DellTransportList>> call, @NotNull Throwable t) {
}
});
} 运行该代码将导致以下错误:
com.dell.mycampus.view.adapter.DellTransportAdapter.getItemCount中的
java.lang.NullPointerException:尝试在空对象引用上调用接口方法'int java.util.List.size()‘
customers初始化了吗?
发布于 2020-09-30 05:40:48
private List<DellTransportList> customers;未初始化。请检查您的答复和您的ArrayList,以避免这个问题。
发布于 2020-09-30 05:48:06
同意@Ashish的回答,您还必须为使用LayoutManager的回收商设置setLayoutManager()
mList = response.body();
mAdapter = new DellTransportAdapter(mList);
mRecycler.setLayoutManager(new LinearLayoutManager(this));
mRecycler.setAdapter(mAdapter);https://stackoverflow.com/questions/64131464
复制相似问题