spinner listner没有在片段里面触发

问题描述:

我有一个spinner填充在片段里面。 但是当我按其中一个项目时,监听器不起作用。 我在xml文件中定义了一个微调器,我尝试将它的高度宽度设置为0 我通过所有的互联网,我不能让它工作。spinner listner没有在片段里面触发

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    if(mPageNumber==0){ 
     rootView = (ViewGroup) inflater.inflate(R.layout.fragment_worker_data_q1, container, false); 
     tvr = new TextView[2]; 
     tvr[0] = (TextView)rootView.findViewById(R.id.responser0); 
     tvr[1] = (TextView)rootView.findViewById(R.id.responser1); 
     spinner = (Spinner) rootView.findViewById(R.id.spinner1); 
     lables = new ArrayList<String>(); //= db.getAllLabels(); 
     makeJsonObjReq(); 
     // Creating adapter for spinner 
     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(rootView.getContext(), 
       android.R.layout.simple_spinner_item, lables); 

     // Drop down layout style - 
     dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     // attaching data adapter to spinner 
     spinner.setAdapter(dataAdapter); 
     spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> spinner, View container, 
        int pos, long id) { 
       tvr[0].setText(spinner.getItemAtPosition(pos).toString());  
      } 
      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 
       // TODO Auto-generated method stub 
      } 
     }); 
    } 
    else if(mPageNumber==1){   
    } 
    return rootView; 
} 

如果我取消从我的服务器服用标签makeObjReq(),并用手把一些标签,它的工作。但我需要从我的服务器获取标签。我认为问题与请求,因为在请求完成前的rootView返回。

private void makeJsonObjReq() { 
     showProgressDialog(); 
     RequestQueue queue = MyVolley.getRequestQueue(); 
     JsonObjectRequest myReq= new JsonObjectRequest(Method.GET, 
               "http://10.0.0.3/task_manager/v1/works", 
               null, createMyReqSuccessListener(), 
               createMyReqErrorListener()) { 
     }; 
     myReq.setTag(TextUtils.isEmpty("tag_json_arry") ? MyVolley.class.getSimpleName() : "tag_json_arry"); 
     queue.add(myReq); 
    } 
private Listener<JSONObject> createMyReqSuccessListener() { 
    return new Response.Listener<JSONObject>() { 
     @Override 
     public void onResponse(JSONObject response) { 
      // TODO Auto-generated method stub 
      try { 
       JSONArray j = new JSONArray(response.getString("works")); 
       int id; 
       String name; 
       JSONArray array = new JSONArray(j.toString()); 
       for (int i = 0; i < array.length(); i++) { 
        JSONObject row = array.getJSONObject(i); 
        id = row.getInt("id"); 
        name = row.getString("name"); 
        lables.add(name); 
       } 
      } catch (JSONException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 
      hideProgressDialog(); 
     } 
    }; 
} 
+0

'但是当我按下其中一个项目听者不工作,在哪个项目上它不工作?它不适用于只有一个特定的项目,并适用于其他项目?它是你的最上面的项目? – 2014-09-04 19:53:36

+0

我内部有3个项目,其中没有一个触发了监听器 – 2014-09-04 20:09:22

+0

请尝试在'onItemSelected'里面做一个'Toast',让我知道这个Toast是否有效。想要确定是否有'tvr [0] '。 – 2014-09-04 20:15:14

makeJsonObjReq();是一个异步方法,但你设置适配器后调用此函数,此时标签列表长度只会是0,所以要么设置Spinner适配器得到响应后或通知您的适配器onResponse方法数据集已更改。

+0

这么多工作! – 2014-09-05 07:36:42