我在片段中填充了一个微调器。 但当我按下其中一个项目时,听众并没有工作。 我在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();
}
};
}
答案 0 :(得分:1)
makeJsonObjReq();
是一个异步方法,但你在调用this函数后设置了适配器,这次标签列表长度只有0,所以要么在得到响应后设置微调器适配器,要么通知你的适配器{{ 1}}数据集的方法已更改。