Android 使用JSON填充微调器

Android 使用JSON填充微调器,android,json,Android,Json,我在用json数据填充微调器时遇到了一个问题。我使用的代码没有返回任何内容。代码如下 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); primaryid=(Spinner) findViewById(R.id.spinner1); AsyncHttpCl

我在用json数据填充微调器时遇到了一个问题。我使用的代码没有返回任何内容。代码如下

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    primaryid=(Spinner) findViewById(R.id.spinner1); 

    AsyncHttpClient usercheck=new AsyncHttpClient();
    usercheck.get("URL", new AsyncHttpResponseHandler(){
        public void onSuccess(String response){
            try {
                JSONObject obj3 = new JSONObject(response);
                JSONArray jsonArray3 = obj3.getJSONArray("PopulateSuppliersList");
                 name=obj3.getJSONArray("name");
                int length3 = jsonArray3.length();
                  List<String> listContents3 = new ArrayList<String>(length3);
                  for (int i = 0; i < length3; i++)
                  {
                      JSONObject user3 = jsonArray3.getJSONObject(i);
                      if(user3.getInt("ID")>=5){
                      listContents3.add(user3.getString("SUPPLIER_NAME"));}
                      }
                      primaryid = (Spinner) findViewById(R.id.spinner1);
                      primaryid.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_dropdown_item_1line, listContents3));
                  }


             catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
primaryid=(微调器)findViewById(R.id.spinner1);
AsyncHttpClient usercheck=新建AsyncHttpClient();
get(“URL”,新的AsyncHttpResponseHandler()){
成功时公共无效(字符串响应){
试一试{
JSONObject obj3=新JSONObject(响应);
JSONArray jsonArray3=obj3.getJSONArray(“大众供应商列表”);
name=obj3.getJSONArray(“name”);
int length3=jsonArray3.length();
List listContents3=新的ArrayList(长度3);
对于(int i=0;i=5){
listContents3.add(user3.getString(“供应商名称”);}
}
primaryid=(微调器)findViewById(R.id.spinner1);
setAdapter(新的ArrayAdapter(MainActivity.this,android.R.layout.simple_下拉列表_item_1line,listContents3));
}
捕获(JSONException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}

我认为这可能与方法的同步性有关。您正在发送一个异步请求(不知道何时返回)在OnCreate中。这意味着您正在尝试在OnCreate完成后更新UI线程。您必须使用与UI线程连接的某些方法更新UI,如AsyncTask中的OnPostExecute或使用AsyncHttpResponseHandler的类中的OnFinished。

显示从服务器响应获取的JSON字符串创建原因在循环中调用适配器?似乎您已经完成了对“primaryid”的引用spinner。但这些都不是问题。在spinner中看到一些数据应该是可以的。你应该在问题中显示JSON字符串。在设置适配器之前,试着打印listContents3列表只是为了调试。JSON字符串不能公开。它是由一家公司提供的。对代码有任何更改吗?这是s要使用的REST方法方法PopulateSuppliersList?iActivationStatusID={iActivationStatusID}用于填充微调器