无法清除微调器数据android

时间:2014-03-07 23:26:20

标签: android spinner

我的Android应用程序中的旋转器有问题。我实施了两个微调器。两者都从json加载内容。第一个看起来像,

    // Code for First spinner
    loc = json.getJSONArray("location");
    for(int i = 0; i < loc.length(); i++){
        JSONObject c = loc.getJSONObject(i);
        //put json obkject on variable
        String l = c.getString("stock_location");
        locationList.add(l);
    // Set Spinner Adapter
    location.setAdapter(new ArrayAdapter<String>OfferedDiesel.this,android.R.layout.simple_spinner_dropdown_item,locationList));
    // Spinner on item click listener
    location.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> arg0,View arg1, int position, long arg3) {  
        place = locationList.get(position);  
        selected = place;
        new LoadProduct().execute();
        product_title.setVisibility(View.VISIBLE);
        product.setVisibility(View.VISIBLE);
    }

    @Override
   public void onNothingSelected(AdapterView<?> arg0) {
         place = null;

   }
   });                  
   }

//Following is the LoadProduct
private class LoadProduct extends AsyncTask<String, String, JSONObject> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(OfferedDiesel.this);
            pDialog.setMessage("Loading Product ...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
         }
        @Override
        protected JSONObject doInBackground(String... args) {
            UserFunctions userFunction = new UserFunctions();
            JSONObject json = userFunction.getProductFromLocation(selected);
            return json;
        }

        protected void onPostExecute(JSONObject json) {
            if(pDialog.isShowing()){
                pDialog.dismiss();
            }
            // Locate the spinner in activity_main.xml            
            /*LOcate site node*/
            try{
                if(json.has("error_msg")){
                    String err = json.getString("error_msg");
                    alert.showAlertDialog(OfferedDiesel.this, "ALert !!", err, null);
                }else{
                    prod = json.getJSONArray("product");

                    for(int i = 0; i < prod.length(); i++){
                        JSONObject d = prod.getJSONObject(i);
                        //put json obkject on variable
                        String k = d.getString("stock_name");
                        productList.add(k);

                        arrayAdapter = new ArrayAdapter<String>(OfferedDiesel.this,android.R.layout.simple_spinner_dropdown_item,productList);
                        // Set Spinner Adapter
                        product.setAdapter(arrayAdapter);
                         // Spinner on item click listener
                        product.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                        @Override
                        public void onItemSelected(AdapterView<?> arg0,View arg1, int position, long arg3) {  
                             good = locationList.get(position);  


                                  //selected = place;

                                    }

                                    @Override
                                    public void onNothingSelected(AdapterView<?> arg0) {
                                        place = null;

                                    }
                                });                     
                    }
                }

            }catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

    }/*End of Spinner Populate*/

在这里,每当我在上面的微调器中选择一个新项目时,它将执行new LoadProduct().execute();,在我的第二个微调器上,我将获取数据但是附加了日期。我的意思是,例如,如果通过我的第一个spiner上的defalt'1'然后在第二个微调器上我将得到“First”,当我选择'2'(在第一个微调器上更改)然后我将得到“Second”它附加在'First '因此我得到2个项目“第一个”和“第二个”而不是只有一个“第二个”。我现在需要在加载新的之前清除所有微调器列表。对于两个微调器,我使用json来加载数据。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

我会在这里对你要做的事情进行一些猜测,因为我并不是100%肯定我理解......这就是我认为你想要做的事情做:

  1. 有两个ListView s。
  2. 当您点击第一个时,它会在第二个文本中设置要加载的文本。
  3. 通过名为AsyncTask的{​​{1}}来实现。
  4. {li> LoadProduct用于selected以确定要加载的内容。
  5. 你没有得到你期望的结果。
  6. 好的,所以如果我就在这里,我会建议一些改变。

    1. 将所选值传递给AsyncTask。
    2. 清除以前的适配器的值。
    3. 添加新值。
    4. AsyncTask应该能够接受输入,没问题。

答案 1 :(得分:-1)

在向阵列添加新数据之前,您只需要使用clear方法清除数组列表,这样可以帮助您