0
public class MainActivity extends AppCompatActivity {

    RecyclerView recyclerView;
    RecyclerView.LayoutManager layoutManager;
    RecyclerviewAdapter adapter;
    ProgressDialog dialog;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


## this is my main activity here i add my data into recyclerview##

        setContentView(R.layout.activity_main);

        dialog = new ProgressDialog(this);

        recyclerView = findViewById(R.id.recyclerview);
        layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setHasFixedSize(true);

        apiData();
    }


    public void apiData()
    {
        dialog.show();
        Map<String, String> param = new HashMap<>();
//        param.put("TOKEN","b0dba610e269abc702843d1cf636b786");
//        Log.d("tokenvalue", String.valueOf(param));

        String url = "http://104.131.114.237/saathi/api/getAllHrOptions";

        APIManager.getInstance().callAPI(Request.Method.GET, url, param, this, new APIManager.APICallbackInterface() {
            @Override
            public void onSuccessFinished(String result)
            {
                dialog.cancel();


                GsonBuilder gsonBuilder = new GsonBuilder();


                Gson gson = gsonBuilder.create();

                List<DataProvider> dataProviders = Arrays.asList(gson.fromJson(result,DataProvider[].class));
                adapter = new RecyclerviewAdapter(dataProviders);
                recyclerView.setAdapter(adapter);

                Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onErrorFinished(String result) {

                dialog.cancel();
                Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
            }
        });
    }
}

This is my api format array based

Method: GET

Output:

{
    "code": 200,
    "message": "Success",
    "data": [
        {
            "id": "1",
            "name": "Salary Slip",
            "status": "1"
        },
        {
            "id": "2",
            "name": "ESIC Related",
            "status": "1"
        },
        {
            "id": "3",
            "name": "Attendance",
            "status": "1"
        },
        {
            "id": "4",
            "name": "Service Charge",
            "status": "1"
        },
        {
            "id": "5",
            "name": "Others",
            "status": "1"
        }
    ]
}
AskNilesh
  • 67,701
  • 16
  • 123
  • 163

1 Answers1

0

Try this

DataProvider model = gson.fromJson(result, DataProvider.class);
dataProviders.addAll(model.getData());

and your model class should look like this

public class DataProvider {

    private int code;
    private String message;
    private List<DataBean> data;

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {

        private String id;
        private String name;
        private String status;

        public String getId() {
            return id;
        }

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

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getStatus() {
            return status;
        }

        public void setStatus(String status) {
            this.status = status;
        }
    }
}
AbhayBohra
  • 2,047
  • 24
  • 36
  • where i pass the api array name (data) in my main activity – tarun bhola Jul 31 '18 at 06:25
  • Check my Edit..It will automatically detect..only you have to make the model class like this...try it – AbhayBohra Jul 31 '18 at 06:28
  • DataProvider model = gson.fromJson(result, DataProvider.class); dataProviders.addAll(model.getData()); // i have problem in this code can you please elaborate – tarun bhola Jul 31 '18 at 06:42
  • What problem are you getting? – AbhayBohra Jul 31 '18 at 06:43
  • when i launch my app it give error in this method @Override public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { holder.id.setText(list.get(position).getCode()); holder.name.setText(list.get(position).getMessage()); } – tarun bhola Jul 31 '18 at 06:45
  • adapter code is too long it will not add in comment – tarun bhola Jul 31 '18 at 06:54
  • Process: in.advaitsolutions.www.gsondemo, PID: 29082 android.content.res.Resources$NotFoundException: String resource ID #0xc8 at android.content.res.Resources.getText(Resources.java:353) at android.widget.TextView.setText(TextView.java:4590) at in.advaitsolutions.www.gsondemo.RecyclerviewAdapter.onBindViewHolder(RecyclerviewAdapter.java:35) – tarun bhola Jul 31 '18 at 06:54
  • public class RecyclerviewAdapter extends RecyclerView.Adapter { List list = new ArrayList<>(); public RecyclerviewAdapter(List list) { this.list = list; } – tarun bhola Jul 31 '18 at 07:05
  • @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view, parent, false); return new MyViewHolder(view); } – tarun bhola Jul 31 '18 at 07:05
  • @Override public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { holder.id.setText(list.get(position).getCode()); holder.name.setText(list.get(position).getMessage()); holder.status.setText((CharSequence) list.get(position).getData()); } – tarun bhola Jul 31 '18 at 07:05
  • @Override public int getItemCount() { return list.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { TextView id,name,status; public MyViewHolder(View itemView) { super(itemView); id = itemView.findViewById(R.id.id); name = itemView.findViewById(R.id.tittle); status = itemView.findViewById(R.id.status); } } } – tarun bhola Jul 31 '18 at 07:05
  • In you onBindViewHolder in setText, add +"" for ex holder.name.setText(list.get(position).getMessage()+""); in all textViews – AbhayBohra Jul 31 '18 at 07:10
  • For more details about resourceNot Found exception..check this https://stackoverflow.com/q/9161435/3789993 – AbhayBohra Jul 31 '18 at 07:13
  • "code": 200, "message": "Success", only this print in my application not hole data – tarun bhola Jul 31 '18 at 07:16
  • my application run successfully but it not print the hole data GsonBuilder gsonBuilder = new GsonBuilder(); Gson gson = gsonBuilder.create(); //List dataProviders = Arrays.asList(gson.fromJson(result,DataProvider[].class)); List model = Arrays.asList(gson.fromJson(result, DataProvider.class)); adapter = new RecyclerviewAdapter(model); recyclerView.setAdapter(adapter); Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show(); – tarun bhola Jul 31 '18 at 07:19
  • can you please tell me how to print all data please sir its working but partially – tarun bhola Jul 31 '18 at 07:24
  • hye bro where are u please help me bro – tarun bhola Jul 31 '18 at 07:49