【问题标题】:RecyclerView is not showing anythingRecyclerView 没有显示任何内容
【发布时间】:2015-03-04 14:39:26
【问题描述】:

在我的应用程序中,我从 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 是一个类

public class SentData {
String circleName, retailName, retailAddress, captureDate, syncId, detailId;
}

我没有收到任何错误,但列表未显示。我正在尝试用调试器检查,我发现 onBindViewHolder() 方法没有运行。

在 RecyclerViewAdapter 构造函数中,我得到的 dataList 大小为 2,这意味着从 sqlite 数据库中成功检索到数据。

现在我无法找出问题所在以及为什么它不起作用,请帮助我。 在此先感谢:)

【问题讨论】:

    标签: android sqlite android-recyclerview


    【解决方案1】:

    Collections.emptyList() 返回一个空的不可变 列表,您应该改用new ArrayList()
    然后,在您从列表中添加/删除数据后,必须调用 notifyDataSetChanged() 才能看到更改。
    getItemCount() 也应该返回 dataList.size()

    【讨论】:

      【解决方案2】:

      您在 getItemCount() 上返回 0。确保您返回的大小 支持RecyclerView的列表

      【讨论】:

        【解决方案3】:

        我也遇到了同样的问题..您的代码完全没问题,但它没有显示任何列表,因为您在方法 getItemCount() 中返回 0。只需返回 dataList.size() 在您的情况下,它会起作用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-06-28
          • 1970-01-01
          • 2017-09-25
          相关资源
          最近更新 更多