RecyclerView 没有显示任何内容
RecyclerView is not showing anything
在我的应用程序中,我从 sqlite 数据库获取数据并使用 RecyclerView 显示它们。
这是我的适配器 :-
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.Holder> {
private List<SentData> dataList = Collections.emptyList();
private LayoutInflater inflater;
public RecyclerViewAdapter(Context context, List<SentData> dataList) {
Log.d("array size", dataList.size()+"");
this.dataList = dataList;
inflater = LayoutInflater.from(context);
}
@Override
public RecyclerViewAdapter.Holder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.custom_list_row, viewGroup, false);
return new Holder(view);
}
@Override
public void onBindViewHolder(RecyclerViewAdapter.Holder viewHolder, int position) {
SentData current = dataList.get(position);
Log.d("Required data is", current.circleName + current.retailName);
viewHolder.circleName.setText(current.circleName);
viewHolder.retailName.setText(current.retailName);
viewHolder.retailAddress.setText(current.retailAddress);
viewHolder.captureOn.setText(current.captureDate);
}
@Override
public int getItemCount() {
return 0;
}
class Holder extends RecyclerView.ViewHolder {
private TextView retailName, retailAddress, circleName, captureOn;
public Holder(View itemView) {
super(itemView);
retailName = (TextView) itemView.findViewById(R.id.tvRetailerName);
retailAddress = (TextView) itemView.findViewById(R.id.tvRetailAddress);
circleName = (TextView) itemView.findViewById(R.id.tvCircleName);
captureOn = (TextView) itemView.findViewById(R.id.tvCaptureOn);
}
}
}
SentData 是 class
public class SentData {
String circleName, retailName, retailAddress, captureDate, syncId, detailId;
}
我没有收到任何错误,但列表没有显示。我正在尝试检查调试器,我发现 onBindViewHolder() 方法不是 运行.
在 RecyclerViewAdapter 构造函数中,我得到的 dataList 大小为 2,这意味着数据已成功从 sqlite 数据库中检索。
现在我找不到问题所在以及为什么它不起作用,请帮助我。
提前致谢:)
您在 getItemCount()
上 returning 0。确保你 return 的大小
支持 RecyclerView
的列表
Collections.emptyList() return 一个空的 immutable 列表,你应该使用 new ArrayList<>() 代替。
然后 add/remove 列表中的数据必须调用 notifyDataSetChanged() 才能看到更改。
另外 getItemCount() 应该 return dataList.size()
我也遇到了同样的问题..你的代码完全没问题,但它没有显示任何列表,因为你在 方法 0 中 =]getItemCount().只是return
dataList.size() 在你的情况下它会起作用。
在我的应用程序中,我从 sqlite 数据库获取数据并使用 RecyclerView 显示它们。 这是我的适配器 :-
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.Holder> {
private List<SentData> dataList = Collections.emptyList();
private LayoutInflater inflater;
public RecyclerViewAdapter(Context context, List<SentData> dataList) {
Log.d("array size", dataList.size()+"");
this.dataList = dataList;
inflater = LayoutInflater.from(context);
}
@Override
public RecyclerViewAdapter.Holder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.custom_list_row, viewGroup, false);
return new Holder(view);
}
@Override
public void onBindViewHolder(RecyclerViewAdapter.Holder viewHolder, int position) {
SentData current = dataList.get(position);
Log.d("Required data is", current.circleName + current.retailName);
viewHolder.circleName.setText(current.circleName);
viewHolder.retailName.setText(current.retailName);
viewHolder.retailAddress.setText(current.retailAddress);
viewHolder.captureOn.setText(current.captureDate);
}
@Override
public int getItemCount() {
return 0;
}
class Holder extends RecyclerView.ViewHolder {
private TextView retailName, retailAddress, circleName, captureOn;
public Holder(View itemView) {
super(itemView);
retailName = (TextView) itemView.findViewById(R.id.tvRetailerName);
retailAddress = (TextView) itemView.findViewById(R.id.tvRetailAddress);
circleName = (TextView) itemView.findViewById(R.id.tvCircleName);
captureOn = (TextView) itemView.findViewById(R.id.tvCaptureOn);
}
}
}
SentData 是 class
public class SentData {
String circleName, retailName, retailAddress, captureDate, syncId, detailId;
}
我没有收到任何错误,但列表没有显示。我正在尝试检查调试器,我发现 onBindViewHolder() 方法不是 运行.
在 RecyclerViewAdapter 构造函数中,我得到的 dataList 大小为 2,这意味着数据已成功从 sqlite 数据库中检索。
现在我找不到问题所在以及为什么它不起作用,请帮助我。 提前致谢:)
您在 getItemCount()
上 returning 0。确保你 return 的大小
支持 RecyclerView
Collections.emptyList() return 一个空的 immutable 列表,你应该使用 new ArrayList<>() 代替。
然后 add/remove 列表中的数据必须调用 notifyDataSetChanged() 才能看到更改。
另外 getItemCount() 应该 return dataList.size()
我也遇到了同样的问题..你的代码完全没问题,但它没有显示任何列表,因为你在 方法 0 中 =]getItemCount().只是return dataList.size() 在你的情况下它会起作用。