Есть ли способ зациклить URL для извлечения данных JSON в Android Studio? - PullRequest
0 голосов
/ 24 апреля 2019

Я создаю приложение для Android, которое извлекает данные JSON из URL-адреса, используя Volley

http://10.180.243.14:8080/api/departments/1

. Это позволит выбрать всех сотрудников отдела 1, чей JSON таков:

{
"id": 1,
"deptName": "Raj Bhavan",
"logo": [],
"contacts": [
{
"contactId": 12,
"empName": "John",
"designation": "Director",
"mobile": "9862136415",
"landlineOffice": "123456",
"landlineRes": "2334567",
"fax": "555679",
"email": "administer@gmail.com"
},
{
"contactId": 19,
"empName": "Samuel ",
"designation": "Software Developer",
"mobile": "9876542019",
"landlineOffice": "234567",
"landlineRes": "2320398",
"fax": "456678",
"email": "sam@ymail.com"
}
]
}

Iможно получить это правильно, используя залп.Но я хочу получить все данные JSON из департамента 2,3,4 и т. Д.

Ниже приведен мой код MainActivity.java:

public class MainActivity extends AppCompatActivity {


    private TextView mTextViewResult;
    private RequestQueue mQueue;
    private TextView mTextViewDept;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        mTextViewDept =findViewById(R.id.text_view_dept);
        mTextViewResult=findViewById(R.id.text_view_result);
        Button buttonParse=findViewById(R.id.button_parse);

        mQueue=Volley.newRequestQueue(this);
        buttonParse.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                jsonParse();
            }
        });

    }

    private void jsonParse(){

        String url="http://10.180.243.14:8080/api/departments/1";
        JsonObjectRequest request=new JsonObjectRequest(Request.Method.GET,url,null,
                    new Response.Listener<JSONObject>(){
                            @Override
                            public void onResponse(JSONObject response){
                                Log.i("tt","deptJson"+response);

                                try {
                                    JSONArray jsonArray=response.getJSONArray("contacts");

                                    String deptName=response.getString("deptName");


                                    for(int i=0;i<jsonArray.length();i++){
                                        JSONObject contact=jsonArray.getJSONObject(i);

                                        int contactId=contact.getInt("contactId");
                                        String empName=contact.getString("empName");
                                        String designation=contact.getString("designation");

                                        mTextViewResult.append(empName+","+ String.valueOf(contactId)+","+designation+"\n\n");

                                    }

                                    mTextViewDept.setText(deptName);
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }
                            }
                    },new Response.ErrorListener(){

                        @Override
                        public void onErrorResponse(VolleyError error) {
                            error.printStackTrace();
                        }
                    });

        mQueue.add(request);
    }
}

Это позволит получить данные JSON только из отдела 1.

Я ожидаю получить все файлы JSON из

http://10.180.243.14:8080/api/departments/2
http://10.180.243.14:8080/api/departments/3
http://10.180.243.14:8080/api/departments/4
...

Я сам создал API, и данные будут добавлены в будущем.Есть ли способ динамически перебирать все URL?

1 Ответ

0 голосов
/ 24 апреля 2019
//Try this
int MAX_OBJECT = 100;
for (int i =1;i<MAX_OBJECT;i++){
     String no = String.valueOf(i);
     jsonParse(no);
}

private void jsonParse(final String NoOfDepartment){
String url="http://10.180.243.14:8080/api/departments/"+NoOfDepartment;
.......
}
...