Не получается распарсить данные с json
public class MainActivity extends AppCompatActivity {
List<Product> products;
RecyclerView recyclerView;
RecyclerAdapter recyclerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
products = new ArrayList<>();
recyclerView = (RecyclerView)findViewById(R.id.productList);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
recyclerAdapter = new RecyclerAdapter(getApplicationContext(),products);
recyclerView.setAdapter(recyclerAdapter);
ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class);
Call<List<Product>> call = apiService.getProducts();
call.enqueue(new Callback<List<Product>>() {
@Override
public void onResponse(Call<List<Product>> call, Response<List<Product>> response) {
products = response.body();
Log.d("TAG","Response = "+products);
recyclerAdapter.setProductList(products);
}
@Override
public void onFailure(Call<List<Product>> call, Throwable t) {
Log.d("TAG","Response = "+t.toString());
}
});
}
}
public class ApiClient {
public static String BASE_URL = "https://peretz-group.ru/api/v2/products?category=93&key=47be9031474183ea92958d5e255d888e47bdad44afd5d7b7201d0eb572be5278";
private static Retrofit retrofit;
public static Retrofit getClient() {
if (retrofit == null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
public interface ApiInterface {
@GET("volley_array.json")
Call<List<Product>> getProducts();
}
public class Product {
@SerializedName("name")
private String title;
@SerializedName("description")
private String description;
@SerializedName("price")
private String price;
@SerializedName("image_app")
private String imageURL;
public Product() {
}
public Product(String title, String description, String price, String imageURL) {
this.title = title;
this.description = description;
this.price = price;
this.imageURL = imageURL;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getImageURL() {
return imageURL;
}
public void setImageURL(String imageURL) {
this.imageURL = imageURL;
}
}
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
Context context;
List<Product> products;
public RecyclerAdapter(Context context, List<Product> products) {
this.context = context;
this.products = products;
}
public void setProductList(List<Product> products) {
this.products = products;
notifyDataSetChanged();
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.product_list_layout, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.productTitle.setText(products.get(position).getTitle().toString());
holder.productDescription.setText(products.get(position).getDescription().toString());
holder.productPrice.setText(products.get(position).getPrice().toString());
Glide.with(context).load(products.get(position).getImageURL()).apply(RequestOptions.centerCropTransform()).into(holder.productImage);
}
@Override
public int getItemCount() {
if (products != null) {
return products.size();
}
return 0;
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView productTitle;
TextView productDescription;
TextView productPrice;
ImageView productImage;
public ViewHolder(@NonNull View itemView) {
super(itemView);
productTitle = itemView.findViewById(R.id.productTitle);
productDescription = itemView.findViewById(R.id.productDescription);
productPrice = itemView.findViewById(R.id.productPrice);
productImage = itemView.findViewById(R.id.productImage);
}
}
}