spinner侦听器未在片段内触发

时间:2014-09-04 19:46:32

标签: android httprequest android-spinner android-volley

我在片段中填充了一个微调器。 但当我按下其中一个项目时,听众并没有工作。 我在xml文件中定义了一个微调器,我尝试将其高度宽度设置为0 我通过所有互联网,我不能让它工作。

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

1 个答案:

答案 0 :(得分:1)

makeJsonObjReq();是一个异步方法,但你在调用this函数后设置了适配器,这次标签列表长度只有0,所以要么在得到响应后设置微调器适配器,要么通知你的适配器{{ 1}}数据集的方法已更改。