Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
33
respostas

Setar resposta da API em um Recycler

Ajuda.... Já tentei de várias formas montar meu model e adapter para aparecer uma lista com as informações vindas da api usando o recycler.

essa é a resposta vinda da API:

{"status":"success","shoppingLists":[{"id":3,"month":"Agosto","year":2021,"start":"2021-07-28","end":"2021-08-04","status":"Fechada","discount":null,"created_by":1,"shopping_list_type_id":1,"created_at":"2021-07-28T11:44:15.000000Z","updated_at":"2021-08-05T04:00:29.000000Z"},{"id":2,"month":"Julho","year":2021,"start":"2021-06-14","end":"2021-06-16","status":"Fechada","discount":null,"created_by":1,"shopping_list_type_id":1,"created_at":"2021-06-14T14:58:28.000000Z","updated_at":"2021-06-17T04:00:29.000000Z"}]}

tenho duas listas... preciso de ajuda para setar as informações recebidas (asynctask), no recycler.

33 respostas

public class Lista implements Parcelable {

@SerializedName("status")
@Ignore
private String status;

@SerializedName("shoppingLists")
private List<ShoppingLists> shoppingLists;

protected Lista(Parcel in) {
    status = in.readString();
    shoppingLists = in.createTypedArrayList(ShoppingLists.CREATOR);
}

public static final Creator<Lista> CREATOR = new Creator<Lista>() {
    @Override
    public Lista createFromParcel(Parcel in) {
        return new Lista(in);
    }

    @Override
    public Lista[] newArray(int size) {
        return new Lista[size];
    }
};

public List<ShoppingLists> getShoppingLists() {
    return shoppingLists;
}

public String getStatus() {
    return status;
}


@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel parcel, int i) {
    parcel.writeString(status);
    parcel.writeTypedList(shoppingLists);

}

}

public class ShoppingLists implements Parcelable {

@SerializedName("id")
@Expose
private int id;
@SerializedName("month")
@Expose
private String month;
@SerializedName("year")
@Expose
private int year;
@SerializedName("start")
@Expose
private String start;
@SerializedName("end")
@Expose
private String end;
@SerializedName("status")
@Expose
private String status;
@SerializedName("discount")
@Expose
private int discount;
@SerializedName("created_by")
@Expose
private int created_by;
@SerializedName("shopping_list_type_id")
@Expose
private int shopping_list_type_id;
@SerializedName("created_at")
@Expose
private String created_at;
@SerializedName("updated_at")
@Expose
private String updated_at;


protected ShoppingLists(Parcel in) {
    id = in.readInt();
    month = in.readString();
    year = in.readInt();
    start = in.readString();
    end = in.readString();
    status = in.readString();
    discount = in.readInt();
    created_by = in.readInt();
    shopping_list_type_id = in.readInt();
    created_at = in.readString();
    updated_at = in.readString();
}

public static final Creator<ShoppingLists> CREATOR = new Creator<ShoppingLists>() {
    @Override
    public ShoppingLists createFromParcel(Parcel in) {
        return new ShoppingLists(in);
    }

    @Override
    public ShoppingLists[] newArray(int size) {
        return new ShoppingLists[size];
    }
};

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getMonth() {
    return month;
}

public void setMonth(String month) {
    this.month = month;
}

public int getYear() {
    return year;
}

public void setYear(int year) {
    this.year = year;
}

public String getStart() {
    return start;
}

public void setStart(String start) {
    this.start = start;
}

public String getEnd() {
    return end;
}

public void setEnd(String end) {
    this.end = end;
}

public String getStatus() {
    return status;
}

public void setStatus(String status) {
    this.status = status;
}

public int getDiscount() {
    return discount;
}

public void setDiscount(int discount) {
    this.discount = discount;
}

public int getCreated_by() {
    return created_by;
}

public void setCreated_by(int created_by) {
    this.created_by = created_by;
}

public int getShopping_list_type_id() {
    return shopping_list_type_id;
}

public void setShopping_list_type_id(int shopping_list_type_id) {
    this.shopping_list_type_id = shopping_list_type_id;
}

public String getCreated_at() {
    return created_at;
}

public void setCreated_at(String created_at) {
    this.created_at = created_at;
}

public String getUpdated_at() {
    return updated_at;
}

public void setUpdated_at(String updated_at) {
    this.updated_at = updated_at;
}

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel parcel, int i) {
    parcel.writeInt(id);
    parcel.writeString(month);
    parcel.writeInt(year);
    parcel.writeString(start);
    parcel.writeString(end);
    parcel.writeString(status);

}

}

public class ListasRetrofitTask extends AsyncTask {

@SuppressLint("StaticFieldLeak")
private final Context context;

public ListasRetrofitTask(Context context) {
    this.context = context;
}

@Override
protected Object doInBackground(Object[] objects) {
    User_DAO userDAO = Market_BD.getInstance(context).getUserDAO();
    JsonObject jsonObject = new JsonObject();
    jsonObject.addProperty("token", userDAO.consultaToken());
    DateService service = new MarketRetrofit().getDateService();
    Call<Lista> call = service.lista(jsonObject);
    call.enqueue(new Callback<Lista>() {
        @Override
        public void onResponse(Call<Lista> call, Response<Lista> response) {
            if(response.isSuccessful()){
                Lista body = response.body();
                List<ShoppingLists> shoppingLists = body.getShoppingLists();
                Log.i("TAMANHO LISTA", String.valueOf(shoppingLists.size()));
                Intent in = new Intent(context, ListaMercado.class);
                in.putExtra("LIST", (Parcelable) shoppingLists);
            }
        }

        @Override
        public void onFailure(Call<Lista> call, Throwable t) {

        }
    });

    return null;
}

@Override
protected void onPreExecute() {
    super.onPreExecute();
    Toast.makeText(context, "Buscando histórico de listas...", Toast.LENGTH_SHORT).show();
}

}

private void configLista() {
    List<Lista> dados;
    dados = getIntent().getParcelableArrayListExtra("LIST");
    RecyclerView recyclerView = findViewById(R.id.recycler_lista);
    recyclerView.setAdapter(new AdapterLista(this, dados));
    recyclerView.setHasFixedSize(true);
}
2021-08-11 11:12:43.993 8835-8877/com.example.appmarket I/okhttp.OkHttpClient: {"status":"success","shoppingLists":[{"id":3,"month":"Agosto","year":2021,"start":"2021-07-28","end":"2021-08-04","status":"Fechada","discount":null,"created_by":1,"shopping_list_type_id":1,"created_at":"2021-07-28T11:44:15.000000Z","updated_at":"2021-08-05T04:00:29.000000Z"},{"id":2,"month":"Julho","year":2021,"start":"2021-06-14","end":"2021-06-16","status":"Fechada","discount":null,"created_by":1,"shopping_list_type_id":1,"created_at":"2021-06-14T14:58:28.000000Z","updated_at":"2021-06-17T04:00:29.000000Z"}]}
2021-08-11 11:12:43.993 8835-8877/com.example.appmarket I/okhttp.OkHttpClient: <-- END HTTP (517-byte body)
2021-08-11 11:12:44.018 8835-8835/com.example.appmarket I/TAMANHO LISTA: 2
2021-08-11 11:12:44.019 8835-8835/com.example.appmarket D/AndroidRuntime: Shutting down VM
2021-08-11 11:12:44.023 8835-8835/com.example.appmarket E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.appmarket, PID: 8835
    java.lang.ClassCastException: java.util.ArrayList cannot be cast to android.os.Parcelable
        at com.example.appmarket.asynctask.ListasRetrofitTask$1.onResponse(ListasRetrofitTask.java:59)
        at retrofit2.DefaultCallAdapterFactory$ExecutorCallbackCall$1.lambda$onResponse$0$DefaultCallAdapterFactory$ExecutorCallbackCall$1(DefaultCallAdapterFactory.java:89)
        at retrofit2.-$$Lambda$DefaultCallAdapterFactory$ExecutorCallbackCall$1$hVGjmafRi6VitDIrPNdoFizVAdk.run(Unknown Source:6)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:235)
        at android.app.ActivityThread.main(ActivityThread.java:6760)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)
2021-08-11 11:12:44.044 8835-8835/com.example.appmarket I/Process: Sending signal. PID: 8835 SIG: 9

Julia, você precisa usar o método putParcelableArrayListExtra no lugar do putExtra comum.

@Override
protected Object doInBackground(Object[] objects) {
    User_DAO userDAO = Market_BD.getInstance(context).getUserDAO();
    JsonObject jsonObject = new JsonObject();
    jsonObject.addProperty("token", userDAO.consultaToken());
    DateService service = new MarketRetrofit().getDateService();
    Call<Lista> call = service.lista(jsonObject);
    call.enqueue(new Callback<Lista>() {
        @Override
        public void onResponse(Call<Lista> call, Response<Lista> response) {
            if(response.isSuccessful()){
                Lista body = response.body();
                List<ShoppingLists> shoppingLists = body.getShoppingLists();
                Log.i("TAMANHO LISTA", String.valueOf(shoppingLists.size()));
                Intent in = new Intent(context, ListaMercado.class);
                in.putParcelableArrayListExtra("LIST",  shoppingLists); // essa linha muda
            }
        }

        @Override
        public void onFailure(Call<Lista> call, Throwable t) {

        }
    });

    return null;
}
2021-08-12 07:47:38.556 11567-11613/com.example.appmarket I/okhttp.OkHttpClient: {"status":"success","shoppingLists":[{"id":3,"month":"Agosto","year":2021,"start":"2021-07-28","end":"2021-08-04","status":"Fechada","discount":null,"created_by":1,"shopping_list_type_id":1,"created_at":"2021-07-28T11:44:15.000000Z","updated_at":"2021-08-05T04:00:29.000000Z"},{"id":2,"month":"Julho","year":2021,"start":"2021-06-14","end":"2021-06-16","status":"Fechada","discount":null,"created_by":1,"shopping_list_type_id":1,"created_at":"2021-06-14T14:58:28.000000Z","updated_at":"2021-06-17T04:00:29.000000Z"}]}
2021-08-12 07:47:38.557 11567-11613/com.example.appmarket I/okhttp.OkHttpClient: <-- END HTTP (517-byte body)
2021-08-12 07:47:38.568 11567-11567/com.example.appmarket I/TAMANHO LISTA: 2
2021-08-12 07:47:38.597 11567-11567/com.example.appmarket W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@40e5030
2021-08-12 07:47:38.736 11567-11567/com.example.appmarket D/AndroidRuntime: Shutting down VM
2021-08-12 07:47:38.739 11567-11567/com.example.appmarket E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.appmarket, PID: 11567
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.appmarket/com.example.appmarket.ui.ListaMercado}: java.lang.RuntimeException: Parcel android.os.Parcel@b3516ea: Unmarshalling unknown type code 7143521 at offset 244
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2979)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3114)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1871)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:235)
        at android.app.ActivityThread.main(ActivityThread.java:6760)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)
     Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@b3516ea: Unmarshalling unknown type code 7143521 at offset 244
        at android.os.Parcel.readValue(Parcel.java:2747)
        at android.os.Parcel.readListInternal(Parcel.java:3098)
        at android.os.Parcel.readArrayList(Parcel.java:2319)
        at android.os.Parcel.readValue(Parcel.java:2689)
        at android.os.Parcel.readArrayMapInternal(Parcel.java:3037)
        at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:288)
        at android.os.BaseBundle.unparcel(BaseBundle.java:232)
        at android.os.Bundle.getParcelableArrayList(Bundle.java:986)
        at android.content.Intent.getParcelableArrayListExtra(Intent.java:7512)
        at com.example.appmarket.ui.ListaMercado.configLista(ListaMercado.java:47)
        at com.example.appmarket.ui.ListaMercado.onCreate(ListaMercado.java:26)
        at android.app.Activity.performCreate(Activity.java:7136)
        at android.app.Activity.performCreate(Activity.java:7127)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2959)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3114) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1871) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:235) 
        at android.app.ActivityThread.main(ActivityThread.java:6760) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911) 
2021-08-12 07:47:38.758 11567-11567/com.example.appmarket I/Process: Sending signal. PID: 11567 SIG: 9

public class ListaMercado extends AppCompatActivity {

private Toolbar toolbar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_lista);
    config_toolbar();
    configLista();
    Log.d("CHAMADO ONCREATE", "onCreateLista");
}

private void config_toolbar() {
    toolbar = findViewById(R.id.toolbar_listas);
    toolbar.setTitle("Histórico de Listas");
    setSupportActionBar(toolbar);
    if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }
}

@Override
public boolean onSupportNavigateUp() {
    finish();
    return true;
}

private void configLista() {
    List<Lista> dados;
    dados = getIntent().getParcelableArrayListExtra("LIST");  /// ele acusa o erro nesta linha 
    RecyclerView recyclerView = findViewById(R.id.recycler_lista);
    recyclerView.setAdapter(new AdapterLista(this, dados));
    recyclerView.setHasFixedSize(true);
}

}

public class ListasRetrofitTask extends AsyncTask {

@SuppressLint("StaticFieldLeak")
private final Context context;

public ListasRetrofitTask(Context context) {
    this.context = context;
}

@Override
protected Object doInBackground(Object[] objects) {
    User_DAO userDAO = Market_BD.getInstance(context).getUserDAO();
    JsonObject jsonObject = new JsonObject();
    jsonObject.addProperty("token", userDAO.consultaToken());
    DateService service = new MarketRetrofit().getDateService();
    Call<Lista> call = service.lista(jsonObject);
    call.enqueue(new Callback<Lista>() {
        @Override
        public void onResponse(Call<Lista> call, Response<Lista> response) {
            if(response.isSuccessful()){
                Lista body = response.body();
                List<ShoppingLists> shoppingLists = body.getShoppingLists();
                Log.i("TAMANHO LISTA", String.valueOf(shoppingLists.size()));
                Intent in = new Intent(context, ListaMercado.class);
                in.putParcelableArrayListExtra("LIST", (ArrayList<? extends Parcelable>) shoppingLists);
                // ele não aceitou daquela forma 
                context.startActivity(in);
            }
        }

        @Override
        public void onFailure(Call<Lista> call, Throwable t) {

        }
    });


    return null;
}

Não estou conseguindo evoluir na questão de passar dados que vem da api em uma asynctask para uma activity...

No caso você pode tentar colocar um Serializable, não é a melhor opção, mas certeza que funciona, conforme pode ver na documentação

O que muda é que na hora de por tu vai colocar a lista de direto, precisa ser um array list, porque array list é serializable, na hora de pegar, tu vai usar o getSerializableExtra, doc dele

Chuto que isso vai rolar

Já tentei.... mas vou tentar novamente! Obg

2021-08-13 09:57:37.257 13291-13520/com.example.appmarket I/okhttp.OkHttpClient: {"status":"success","shoppingLists":[{"id":3,"month":"Agosto","year":2021,"start":"2021-07-28","end":"2021-08-04","status":"Fechada","discount":null,"created_by":1,"shopping_list_type_id":1,"created_at":"2021-07-28T11:44:15.000000Z","updated_at":"2021-08-05T04:00:29.000000Z"},{"id":2,"month":"Julho","year":2021,"start":"2021-06-14","end":"2021-06-16","status":"Fechada","discount":null,"created_by":1,"shopping_list_type_id":1,"created_at":"2021-06-14T14:58:28.000000Z","updated_at":"2021-06-17T04:00:29.000000Z"}]}
2021-08-13 09:57:37.258 13291-13520/com.example.appmarket I/okhttp.OkHttpClient: <-- END HTTP (517-byte body)
2021-08-13 09:57:37.267 13291-13291/com.example.appmarket I/LISTA API: [com.example.appmarket.model.Listas$ShoppingLists@68790b1, com.example.appmarket.model.Listas$ShoppingLists@fb4b996]
2021-08-13 09:57:37.268 13291-13291/com.example.appmarket I/TAMANHO LISTA API: 2
2021-08-13 09:57:37.309 13291-13291/com.example.appmarket W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@42d0821
2021-08-13 09:57:37.395 13291-13302/com.example.appmarket W/System: A resource failed to call close. 

ESTÁ SENDO ENVIADA DE ACTIVITIES..... 
2021-08-13 09:57:37.395 13291-13291/com.example.appmarket I/LISTA RECEBIDA: [com.example.appmarket.model.Listas$ShoppingLists@ba59082, com.example.appmarket.model.Listas$ShoppingLists@e125393]
2021-08-13 09:57:37.395 13291-13291/com.example.appmarket I/LISTA RECEBIDO TAM: 2

Usando o serializable, estou conseguindo passar a lista do processo em background...para a activity ListaMercado.java. Desta activity eu mando via parâmetro no construtor para o adapter do recycler - ele exibe a tela do recycler porém...apenas 1 lista do conteúdo..... a do id 3 .

public class ListasRetrofitTask extends AsyncTask {

@SuppressLint("StaticFieldLeak")
private final Context context;

public ListasRetrofitTask(Context context) {
    this.context = context;
}

@Override
protected Object doInBackground(Object[] objects) {
    User_DAO userDAO = Market_BD.getInstance(context).getUserDAO();
    JsonObject jsonObject = new JsonObject();
    jsonObject.addProperty("token", userDAO.consultaToken());
    DateService service = new MarketRetrofit().getDateService();
    Call<Listas> call = service.lista(jsonObject);
    call.enqueue(new Callback<Listas>() {
        @Override
        public void onResponse(Call<Listas> call, Response<Listas> response) {
            if(response.isSuccessful()){
                Listas body = response.body();
                ArrayList<Listas.ShoppingLists> shoppingLists = body.getShoppingLists();
                Log.i("LISTA API", String.valueOf(shoppingLists));
                Log.i("TAMANHO LISTA API", String.valueOf(shoppingLists.size()));
                Intent in = new Intent(context, ListaMercado.class);
                in.putExtra("LIST", shoppingLists);
                context.startActivity(in);
            }
        }

        @Override
        public void onFailure(Call<Listas> call, Throwable t) {

        }
    });

public class Listas implements Serializable {

@SerializedName("status")
@Ignore
private String status;

@SerializedName("shoppingLists")
private ArrayList<ShoppingLists> shoppingLists;

public String getStatus() {
    return status;
}

public void setStatus(String status) {
    this.status = status;
}

public ArrayList<ShoppingLists> getShoppingLists() {
    return shoppingLists;
}

public void setShoppingLists(ArrayList<ShoppingLists> shoppingLists) {
    this.shoppingLists = shoppingLists;
}

public class ShoppingLists implements Serializable{

    @SerializedName("id")
    @Expose
    private int id;
    @SerializedName("month")
    @Expose
    private String month;
    @SerializedName("year")
    @Expose
    private int year;
    @SerializedName("start")
    @Expose
    private String start;
    @SerializedName("end")
    @Expose
    private String end;
    @SerializedName("status")
    @Expose
    private String status;
    @SerializedName("discount")
    @Expose
    private int discount;
    @SerializedName("created_by")
    @Expose
    private int created_by;
    @SerializedName("shopping_list_type_id")
    @Expose
    private int shopping_list_type_id;
    @SerializedName("created_at")
    @Expose
    private String created_at;
    @SerializedName("updated_at")
    @Expose
    private String updated_at;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getMonth() {
        return month;
    }

    public void setMonth(String month) {
        this.month = month;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public String getStart() {
        return start;
    }

    public void setStart(String start) {
        this.start = start;
    }

    public String getEnd() {
        return end;
    }

    public void setEnd(String end) {
        this.end = end;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public int getDiscount() {
        return discount;
    }

    public void setDiscount(int discount) {
        this.discount = discount;
    }

    public int getCreated_by() {
        return created_by;
    }

    public void setCreated_by(int created_by) {
        this.created_by = created_by;
    }

    public int getShopping_list_type_id() {
        return shopping_list_type_id;
    }

    public void setShopping_list_type_id(int shopping_list_type_id) {
        this.shopping_list_type_id = shopping_list_type_id;
    }

    public String getCreated_at() {
        return created_at;
    }

    public void setCreated_at(String created_at) {
        this.created_at = created_at;
    }

    public String getUpdated_at() {
        return updated_at;
    }

    public void setUpdated_at(String updated_at) {
        this.updated_at = updated_at;
    }
}

}

public class ListaMercado extends AppCompatActivity {

private Toolbar toolbar;
private ArrayList<Listas.ShoppingLists> dados;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_lista);
    config_toolbar();
    configLista();
    Log.d("CHAMADO ONCREATE", "onCreateLista");
}

private void config_toolbar() {
    toolbar = findViewById(R.id.toolbar_listas);
    toolbar.setTitle("Histórico de Listas");
    setSupportActionBar(toolbar);
    if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }
}

@Override
public boolean onSupportNavigateUp() {
    finish();
    return true;
}

private void configLista() {
    dados = (ArrayList<Listas.ShoppingLists>) getIntent().getSerializableExtra("LIST");
    Log.i("LISTA RECEBIDA", String.valueOf(dados));
    Log.i("LISTA RECEBIDO TAM", String.valueOf(dados.size()));
    RecyclerView recyclerView = findViewById(R.id.recycler_lista);
    recyclerView.setAdapter(new AdapterLista(this, dados));
    recyclerView.setHasFixedSize(true);
}

}

public class AdapterLista extends RecyclerView.Adapter<AdapterLista.ViewHolderLista> {

private final ArrayList<Listas.ShoppingLists> lista;
private final Context context;

public AdapterLista(Context context, ArrayList<Listas.ShoppingLists> lista){
    this.context = context;
    this.lista = lista;
}

@NonNull
@Override
public ViewHolderLista onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View lista = LayoutInflater.from(context)
            .inflate(R.layout.lista, parent, false);
    return new ViewHolderLista(lista);
}

@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onBindViewHolder(@NonNull ViewHolderLista holder, int position) {

    lista.get(position);
    holder.inicio.setText((lista.get(position).getStart()));
    holder.fim.setText(lista.get(position).getEnd());
    holder.status.setText(lista.get(position).getStatus());
    holder.id.setText(String.valueOf(lista.get(position).getId()));
    int id = lista.get(position).getId();
    holder.ver.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(context, "item clicado", Toast.LENGTH_SHORT).show();
                new InfoListasRetrofitTask(context, String.valueOf(id)).execute();
        }
    });
}

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

class ViewHolderLista extends RecyclerView.ViewHolder{

    TextView inicio;
    TextView fim;
    TextView status;
    TextView id;
    ImageButton ver;

    public ViewHolderLista(@NonNull View itemView) {
        super(itemView);

        inicio = itemView.findViewById(R.id.tv_inicio);
        fim = itemView.findViewById(R.id.tv_fim);
        status = itemView.findViewById(R.id.status);
        id = itemView.findViewById(R.id.idLista);
        ver = itemView.findViewById(R.id.im_ver);
    }
}

}

Ai o problema é ver se está chegando a lista inteira no seu adapter e também ver como voce configurou seu adapter e as views que são exibidas.

Onde posso colocar um log no adapter para ver? Tem alguma sugestão ?

mostra pra gente o xml de cada item, só pra gente ter tudo aqui

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler_lista"
        android:layout_width="match_parent"
        android:layout_height="0dp"

        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/toolbar_listas"
        tools:layout_editor_absoluteX="0dp"
        tools:listitem="@layout/lista" />

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar_listas"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        android:theme="?attr/actionBarTheme"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <androidx.fragment.app.FragmentContainerView
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>

não julgue o layout.... é apenas teste... kkkkkkkkkkkkkk bem feio!

coloquei um log no construtor do adapter.... ele mostra tamanho 2

acho que o problema é o match parent no pai da tela, imagino que tu possa usar o wrap content ou definir um tamanho fixo. faz esse teste e fala se funcionou

public class AdapterLista extends RecyclerView.Adapter<AdapterLista.ViewHolderLista> {

private final ArrayList<Listas.ShoppingLists> lista;
private final Context context;

public AdapterLista(Context context, ArrayList<Listas.ShoppingLists> lista){
    this.context = context;
    this.lista = lista;
    Log.i("LISTA ADAPTER", String.valueOf(lista.size()));
}

@NonNull
@Override
public ViewHolderLista onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View lista = LayoutInflater.from(context)
            .inflate(R.layout.lista, parent, false);
    return new ViewHolderLista(lista);
}

@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onBindViewHolder(@NonNull ViewHolderLista holder, int position) {

    lista.get(position);
    holder.inicio.setText((lista.get(position).getStart()));
    holder.fim.setText(lista.get(position).getEnd());
    holder.status.setText(lista.get(position).getStatus());
    holder.id.setText(String.valueOf(lista.get(position).getId()));
    int id = lista.get(position).getId();
    holder.ver.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(context, "item clicado", Toast.LENGTH_SHORT).show();
                new InfoListasRetrofitTask(context, String.valueOf(id)).execute();
        }
    });
}

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

class ViewHolderLista extends RecyclerView.ViewHolder{

    TextView inicio;
    TextView fim;
    TextView status;
    TextView id;
    ImageButton ver;

    public ViewHolderLista(@NonNull View itemView) {
        super(itemView);

        inicio = itemView.findViewById(R.id.tv_inicio);
        fim = itemView.findViewById(R.id.tv_fim);
        status = itemView.findViewById(R.id.status);
        id = itemView.findViewById(R.id.idLista);
        ver = itemView.findViewById(R.id.im_ver);
    }
}

}

2021-08-13 10:11:40.315 15274-15274/com.example.appmarket I/LISTA ADAPTER: 2

Desculpa..... eu não entendi pode onde mudo???

acho que o problema é o match parent no pai da tela, imagino que tu possa usar o wrap content ou definir um tamanho fixo. faz esse teste e fala se funcionou

solução!

Julia, consegue mandar pra gente o arquivo: R.layout.lista

Meu chute é que nesse arquivo voce esteja usando match parent no pai, que faz com que utilize a tela inteira, por isso não está vendo o resto dos itens.

entendiiiii

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent">

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recycler_lista"
    android:layout_width="match_parent"
    android:layout_height="0dp"

    app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/toolbar_listas"
    tools:layout_editor_absoluteX="0dp"
    tools:listitem="@layout/lista" />

<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar_listas"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:minHeight="?attr/actionBarSize"
    android:theme="?attr/actionBarTheme"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<androidx.fragment.app.FragmentContainerView
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content"> // ALTEREI AQUI

        <TextView
            android:id="@+id/idLista"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@color/cardview_light_background"
            android:text="99"
            android:padding="5dp"
            android:textColor="@color/green_500"
            android:textSize="20sp"
            android:textStyle="bold"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <ImageButton
            android:id="@+id/im_ver"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@color/white"
            android:padding="15dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:srcCompat="@drawable/ic_baseline_eye_24" />

        <TextView
            android:id="@+id/status"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="4dp"
            android:text="FECHADA"
            android:textSize="18sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="@+id/textView3"
            app:layout_constraintStart_toStartOf="@+id/textView3"
            app:layout_constraintTop_toBottomOf="@+id/textView3" />

        <TextView
            android:id="@+id/tv_inicio"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="4dp"
            android:text="00/00/00 "
            android:textSize="18sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="@+id/textView"
            app:layout_constraintStart_toStartOf="@+id/textView"
            app:layout_constraintTop_toBottomOf="@+id/textView" />

        <TextView
            android:id="@+id/tv_fim"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="4dp"
            android:text="00/00/01"
            android:textSize="18sp"
            android:textStyle="bold"
            app:layout_constraintEnd_toEndOf="@+id/textView2"
            app:layout_constraintStart_toStartOf="@+id/textView2"
            app:layout_constraintTop_toBottomOf="@+id/textView2" />

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginTop="2dp"
            android:text="Início"
            android:textColor="@color/green_500"
            android:textSize="20sp"
            app:layout_constraintStart_toEndOf="@+id/idLista"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="2dp"
            android:text="Fim"
            android:textColor="@color/green_500"
            android:textSize="20sp"
            app:layout_constraintEnd_toStartOf="@+id/textView3"
            app:layout_constraintStart_toEndOf="@+id/textView"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="2dp"
            android:layout_marginEnd="16dp"
            android:text="Status"
            android:textColor="@color/green_500"
            android:textSize="20sp"
            app:layout_constraintEnd_toStartOf="@+id/im_ver"
            app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

Muito Obrigada!!!