【问题标题】:Android recyclerView does not loadAndroid recyclerView 不加载
【发布时间】:2019-05-16 22:13:02
【问题描述】:

recyclerView 仅在我在 messenger 中发送消息时加载。 当我执行应用程序时,recyclerView 不会出现。 在下面的代码中,我将代码放入我的适配器中。

query1.getFirstInBackground(new GetCallback<ParseObject>() {
        @Override
        public void done(ParseObject object, ParseException e) {
            if (e == null) {
                description.setText(object.getString("Description"));
                schedule.setText(object.getString("Schedule"));
                adress.setText(object.getString("Adress"));
                JSONArray array = object.getJSONArray("Classes");
                for (int i = 0; i < array.length(); i++) {

                    try {
                        JSONObject jsonObject = array.getJSONObject(i);

                        Classes data = new Classes(jsonObject.getString("Aula"), jsonObject.getString("Horario"), jsonObject.getString("Preço"));

                        data_list.add(data);
                    } catch (JSONException e1) {

                    }

                }

            } else {
                Log.i("Gym", "Error " + e.getMessage());

            }
        }

这是我的适配器: 我正在使用 ParseServer,但这不起作用...

public DataAdapter(Context context, List<Classes> classes){
    this.context=context;
    this.classes= classes;

}



@Override
public ViewHolder onCreateViewHolder( ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_row,parent,false);

    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {

    holder.aula.setText(classes.get(position).getAula());
    holder.preco.setText(classes.get(position).getPreco());
    holder.horario.setText(classes.get(position).getHorario());
}

@Override
public int getItemCount() {
    return classes.size();
}

public class ViewHolder extends RecyclerView.ViewHolder {
    private TextView aula;
    private TextView preco;
    private TextView horario;
    public ViewHolder(View itemView) {
        super(itemView);
        aula = (TextView)itemView.findViewById(R.id.aula);
        preco = (TextView) itemView.findViewById(R.id.preço);
        horario= (TextView) itemView.findViewById(R.id.horario);
    }
}

有人可以帮帮我吗?

【问题讨论】:

  • 第一个建议 - 使用 Gson 库,你会很高兴的。第二 - 在 try/catch 中添加 e1.printStackTrace(),或者记录它,可能来自另一个你看不到的线程的错误。
  • 您添加数据后是否通过适配器 notifyDataChanged?
  • P.S.使用Log.e 方法(也接受Throwable)而不是Log.i 方法记录错误是个好主意。
  • 我想,一切都很好。在这里分享你的错误日志。
  • 没有错误,它根本不显示。我不知道为什么。

标签: android android-recyclerview adapter


【解决方案1】:

已解决

我错过了适配器中的 notifyDataChanged。

query1.getFirstInBackground(new GetCallback<ParseObject>() {
    @Override
    public void done(ParseObject object, ParseException e) {
        if (e == null) {
            description.setText(object.getString("Description"));
            schedule.setText(object.getString("Schedule"));
            adress.setText(object.getString("Adress"));
            JSONArray array = object.getJSONArray("Classes");
            for (int i = 0; i < array.length(); i++) {

                try {
                    JSONObject jsonObject = array.getJSONObject(i);

                    Classes data = new Classes(jsonObject.getString("Aula"), jsonObject.getString("Horario"), jsonObject.getString("Preço"));

                    data_list.add(data);
                    adapter.notifyDataSetChanged(); //I added this

                } catch (JSONException e1) {

                }

            }

        } else {
            Log.i("Gym", "Error " + e.getMessage());

        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 2017-06-12
    • 2015-07-30
    相关资源
    最近更新 更多