Search code examples
androidandroid-recyclerviewadapter

Android recyclerView does not load


The recyclerView only loads when I send a message in messenger. When I execute the app the recyclerView does not appear. In the following code I'am getting the code to put in my adapter.

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());

            }
        }

This is my adapter: I am using ParseServer, but this does not work...

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);
    }
}

Can someone please give me a hand?


Solution

  • SOLVED

    I missed to notifyDataChanged in the adapter.

    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());
    
            }
        }