0

I asked a question that how to parse JSON data in fragments. But anybody didn't give me a suitable answer. Dear friends, in my app I have done all coding but I am unable to fix the main problem in the Quotes fragment.

private void setupRecyclerView(List<QuotesModel> quotesModelList) {
        QuotesAdapter quotesAdapter = new QuotesAdapter(this,quotesModelList);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setAdapter(quotesAdapter);
    }

I have created this private method, but this context gives the error with a red line. Here, I am sharing all coding please tell me where I am wrong.

package com.myquotescollector.Fragments;

import android.os.Bundle;

import androidx.fragment.app.Fragment;

import androidx.recyclerview.widget.LinearLayoutManager;

import androidx.recyclerview.widget.RecyclerView;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import com.android.volley.RequestQueue;

import com.android.volley.Response;

import com.android.volley.VolleyError;

import com.android.volley.toolbox.JsonArrayRequest;

import com.android.volley.toolbox.JsonRequest;

import com.android.volley.toolbox.Volley;

import com.myquotescollector.Adapters.QuotesAdapter;

import com.myquotescollector.Models.QuotesModel;

import com.myquotescollector.R;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;


public class QuotesFragment extends Fragment {

  private final String JSON_URL = "https://run.mocky.io/v3/81af69d1-0a72-42ba-973d-2fc2f4fafeaf";
  JsonArrayRequest request;
  RequestQueue requestQueue;
  List<QuotesModel> quotesModelList;
  RecyclerView recyclerView;
    public QuotesFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_quotes, container, false);
        recyclerView = (RecyclerView) view.findViewById(R.id.quotesRecyclerView);
        jsonrequest();
        quotesModelList = new ArrayList<>();
        return view;

    }

    private void jsonrequest() {

        request = new JsonArrayRequest(JSON_URL, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {

                JSONObject jsonObject = null;

                for (int i=0; i<response.length(); i++) {

                    try {
                        jsonObject = response.getJSONObject(i);
                        QuotesModel quotesList = new QuotesModel("name", "description", "image");
                        quotesList.setName(jsonObject.getString("name"));
                        quotesList.setDescription(jsonObject.getString("description"));
                        quotesList.setImage(jsonObject.getInt("image"));
                        quotesModelList.add(quotesList);

                    }catch (JSONException e){
                        e.printStackTrace();
                    }
                }
                
                setupRecyclerView(quotesModelList);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });

        requestQueue = Volley.newRequestQueue(QuotesFragment.this);
        requestQueue.add(request);
    }

    private void setupRecyclerView(List<QuotesModel> quotesModelList) {
        QuotesAdapter quotesAdapter = new QuotesAdapter(this,quotesModelList);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setAdapter(quotesAdapter);
    }
}

                    ///////////////////////////////////////////////

                        This is **QuotesAdapter**.java Class


package com.myquotescollector.Adapters;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ImageView;

import android.widget.TextView;

import androidx.annotation.NonNull;

import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;

import com.bumptech.glide.request.RequestOptions;

import com.myquotescollector.Fragments.QuotesFragment;

import com.myquotescollector.Models.QuotesModel;

import com.myquotescollector.R;

import java.util.ArrayList;

import java.util.List;

public class QuotesAdapter extends RecyclerView.Adapter<QuotesAdapter.ViewHolder> {

private Context Context;

private List<QuotesModel> list;

RequestOptions options;

    public QuotesAdapter(Context Context, List<QuotesModel> list) {

        this.Context = Context;

        this.list = list;

        options = new RequestOptions().centerCrop().placeholder(R.drawable.my_shape).error(R.drawable.my_shape);

    }

    @NonNull
    @Override
    public QuotesAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(Context).inflate(R.layout.sample_quotes, parent, false);
        return new ViewHolder(view);
    }

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

        holder.name.setText(list.get(position).getName());
        holder.description.setText(list.get(position).getDescription().toString());
        holder.img.setImageResource(list.get(position).getImage());
        //Here we have one dependency//
        Glide.with(Context).load(list.get(position).getImage()).apply(options).into(holder.img);
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {
        TextView name, description;
        ImageView img;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);

            name = itemView.findViewById(R.id.tvName);
            description = itemView.findViewById(R.id.tvDescription);
            img = itemView.findViewById(R.id.imgJson);
        }
    }
}
  • explain properly (add an image if required) and also add the error logcat. – M DEV Sep 02 '22 at 07:42
  • Please clarify your specific problem or provide additional details to highlight exactly what you need. As it's currently written, it's hard to tell exactly what you're asking. – Community Sep 02 '22 at 09:02

0 Answers0