为什么我的recyclerview有2行相同数据时,它从选择的微调?

问题描述 投票:1回答:1

我有一个SpinnerRecyclerViewRecyclerView用于显示我从数据库读取,但上RecyclerView,我有2行同样的事情时我选择在Spinner第二个选项的数据。

我曾尝试切换回路,改变适配器和不断变化的API网址。

    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);



}

我期望输出到根据与1行的每个数据的URL显示显示,但它显示的是2行当我按上微调位置1

android spinner
1个回答
1
投票

您需要在新的网络请求之前清除allterminalList

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

        }
        else if(i==1)
        {

            loadalltrolley();
        }

添加在onItemSelected(代码中的微调)的方法,这样就可以解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.