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();
}
};
}
答
makeJsonObjReq();
是一个异步方法,但你设置适配器后调用此函数,此时标签列表长度只会是0,所以要么设置Spinner适配器得到响应后或通知您的适配器onResponse
方法数据集已更改。
+0
这么多工作! – 2014-09-05 07:36:42
'但是当我按下其中一个项目听者不工作,在哪个项目上它不工作?它不适用于只有一个特定的项目,并适用于其他项目?它是你的最上面的项目? – 2014-09-04 19:53:36
我内部有3个项目,其中没有一个触发了监听器 – 2014-09-04 20:09:22
请尝试在'onItemSelected'里面做一个'Toast',让我知道这个Toast是否有效。想要确定是否有'tvr [0] '。 – 2014-09-04 20:15:14