почему у моего реселлера есть 2 строки с одинаковыми данными при выборе из счетчика? - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть Spinner и RecyclerView, а RecyclerView используется для отображения данных, которые я извлекаю из базы данных, но на RecyclerView у меня есть 2 строки одного и того же, когда я выбираюВторой вариант на Spinner.

Я попробовал переключить петлю, изменить адаптер и изменить URL-адрес.

    Spinner spinner = (Spinner) findViewById(R.id.spinner);
    adapterspinner = ArrayAdapter.createFromResource(this,R.array.planets_array,android.R.layout.simple_spinner_item);
    adapterspinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapterspinner);
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            if(i==0)
            {
                loadt1trolley();

            }
            if(i==1)
            {

                loadalltrolley();
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });








private void loadalltrolley(){
    StringRequest stringRequest = new StringRequest(Request.Method.GET, PRODUCT_URL,new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONArray products = new JSONArray(response);
 for(int i =0;i<products.length();i++){
                            JSONObject productObject = products.getJSONObject(i);
                            String gate_no = productObject.getString("gate_no");
                            String dock_name = productObject.getString("dock_name");
                            String dock_desc = productObject.getString("dock_desc") ;
                            int flight_arrival = productObject.getInt("flight_arrival");
                            int trolley_count = productObject.getInt("trolley_count");

                            Product product = new Product(gate_no,dock_name,dock_desc,flight_arrival,trolley_count);
                            allterminalList.add(product);




                        }



                        allterminaladapter = new ProductAdapter(alert.this,allterminalList);
                        recyclerView.setAdapter(allterminaladapter);
                        int count = allterminaladapter.getItemCount();
                        int i =0;



                        if (count>0)
                        {
                            displayNotification();
                        }

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(alert.this,error.getMessage(),Toast.LENGTH_SHORT).show();
        }
    });
    Volley.newRequestQueue(this).add(stringRequest);

    refresh(6000);



}      




    private void loadt1trolley(){
    StringRequest stringRequest1 = new StringRequest(Request.Method.GET, T1_URL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONArray products = new JSONArray(response);

                        for(int i =0;i<products.length();i++){
                            JSONObject productObject = products.getJSONObject(i);
                            String gate_no = productObject.getString("gate_no");
                            String dock_name = productObject.getString("dock_name");
                            String dock_desc = productObject.getString("dock_desc") ;
                            int flight_arrival = productObject.getInt("flight_arrival");
                            int trolley_count = productObject.getInt("trolley_count");

                            Product product = new Product(gate_no,dock_name,dock_desc,flight_arrival,trolley_count);
                            allterminalList.add(product);




                        }



                        allterminaladapter = new ProductAdapter(alert.this,allterminalList);
                        recyclerView.setAdapter(allterminaladapter);
                        int count = allterminaladapter.getItemCount();
                        int i =0;



                        if (count>0)
                        {
                            displayNotification();
                        }

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(alert.this,error.getMessage(),Toast.LENGTH_SHORT).show();
        }
    });
    Volley.newRequestQueue(this).add(stringRequest1);

    refresh(6000);



}

Я ожидаю, что вывод будет отображаться в соответствии с отображением URL с 1 строкойкаждый данные, но он отображает 2 строки, когда я нажимаю позицию 1 на счетчике

1 Ответ

0 голосов
/ 08 февраля 2019

Вам необходимо очистить allterminalList перед отправкой нового сетевого запроса

 allterminalList.clear();
 if(i==0)
        {
            loadt1trolley();

        }
        else if(i==1)
        {

            loadalltrolley();
        }

Добавьте код в метод onItemSelected () Spinner, это должно решить проблему.

...