2017-05-05 49 views
-1

我有一个微调将显示所有来自JSON的供应商名称。我已经检索了JSON数据,将它存储在一个数组列表中并显示出来。问题是它只显示一个项目。最近添加的项目。微调只显示JSON中的一个项目

这里是我的代码包含了微调的实现:

 @Override 
    protected void onPostExecute(JSONObject json){ 
     if(json != null){ 
      try{ 
       result = json.getJSONArray("supplier"); 
       if(!result.toString().equals("[]")) { 
        for (int i = 0; i < result.length(); i++) { 
         JSONObject source = result.getJSONObject(i); 
         String suppliers = source.getString("SupplierName"); 
         //Toast.makeText(PurchaseOrder.this, "Suppliers: "+suppliers, Toast.LENGTH_SHORT).show(); 
         spinnerArray = new ArrayList<String>(); 
         spinnerArray.add(suppliers); 

         ArrayAdapter<String> adapter = new ArrayAdapter<String>(
           PurchaseOrder.this, android.R.layout.simple_spinner_item, spinnerArray); 

         spinSupplier.setAdapter(adapter); 
        } 


       } else { 
        Toast.makeText(PurchaseOrder.this, "ERROR", Toast.LENGTH_SHORT).show(); 
       } 

      } catch (Exception e) { 
       e.fillInStackTrace(); 
      } 
     } else if(json == null) { 
      Toast.makeText(PurchaseOrder.this, "NULL", Toast.LENGTH_SHORT).show(); 
     } else { 
      Toast.makeText(PurchaseOrder.this, "ERROR", Toast.LENGTH_SHORT).show(); 
     } 

    } 

JSON:将物品放入数组后

{"supplier":[{"SupplierID":"1","SupplierName":"Nike","Address":"161","City":"Caloocan","Region":"NCR","PostalCode":"1114","Phone":"0917123456","Email":"[email protected]"},{"SupplierID":"2","SupplierName":"Adidas","Address":"36 C","City":"Quezon City","Region":"NCR","PostalCode":"1115","Phone":"7493857","Email":"[email protected]"},{"SupplierID":"3","SupplierName":"NIEK","Address":"","City":"Quezon City","Region":"ARMM","PostalCode":"1104","Phone":"709-2227","Email":"[email protected]"}]} 

回答

3

只需设置适配器如下:

@Override 
     protected void onPostExecute(JSONObject json){ 
      if(json != null){ 
       try{ 
        result = json.getJSONArray("supplier"); 
        if(!result.toString().equals("[]")) { 
         spinnerArray = new ArrayList<String>(); 
         for (int i = 0; i < result.length(); i++) { 
          JSONObject source = result.getJSONObject(i); 
          String suppliers = source.getString("SupplierName"); 
          //Toast.makeText(PurchaseOrder.this, "Suppliers: "+suppliers, Toast.LENGTH_SHORT).show(); 
          spinnerArray.add(suppliers); 
         } 
         ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            PurchaseOrder.this, android.R.layout.simple_spinner_item, spinnerArray); 

          spinSupplier.setAdapter(adapter); 

        } else { 
         Toast.makeText(PurchaseOrder.this, "ERROR", Toast.LENGTH_SHORT).show(); 
        } 

       } catch (Exception e) { 
        e.fillInStackTrace(); 
       } 
      } else if(json == null) { 
       Toast.makeText(PurchaseOrder.this, "NULL", Toast.LENGTH_SHORT).show(); 
      } else { 
       Toast.makeText(PurchaseOrder.this, "ERROR", Toast.LENGTH_SHORT).show(); 
      } 

     } 
+0

我做了你的代码。以及交换列表中的声明和添加项目,并且工作。在我的代码中忽略了它。谢谢。 – JJCADIZ

+0

很高兴为您效劳。 –

0

试试这个循环:

后循环 for循环之前创建数组对象

一套适配器

spinnerArray = new ArrayList<String>(); 
for (int i = 0; i < result.length(); i++) { 
    JSONObject source = result.getJSONObject(i); 
    String suppliers = source.getString("SupplierName"); 
    //Toast.makeText(PurchaseOrder.this, "Suppliers: "+suppliers, Toast.LENGTH_SHORT).show(); 

    spinnerArray.add(suppliers); 
    } 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(
             PurchaseOrder.this, android.R.layout.simple_spinner_item, spinnerArray); 

     spinSupplier.setAdapter(adapter); 
0

您需要删除您的ArrayList非常久远的初始化

 @Override 
protected void onPostExecute(JSONObject json){ 
    if(json != null){ 
     try{ 
      result = json.getJSONArray("supplier"); 
      if(!result.toString().equals("[]")) { 
       spinnerArray = new ArrayList<String>(); 
       for (int i = 0; i < result.length(); i++) { 
        JSONObject source = result.getJSONObject(i); 
        String suppliers = source.getString("SupplierName"); 
        //Toast.makeText(PurchaseOrder.this, "Suppliers: "+suppliers, Toast.LENGTH_SHORT).show(); 

        spinnerArray.add(suppliers); 

       } 

       ArrayAdapter<String> adapter = new ArrayAdapter<String>(
          PurchaseOrder.this, android.R.layout.simple_spinner_item, spinnerArray); 

       spinSupplier.setAdapter(adapter); 

      } else { 
       Toast.makeText(PurchaseOrder.this, "ERROR", Toast.LENGTH_SHORT).show(); 
      } 

     } catch (Exception e) { 
      e.fillInStackTrace(); 
     } 
    } else if(json == null) { 
     Toast.makeText(PurchaseOrder.this, "NULL", Toast.LENGTH_SHORT).show(); 
    } else { 
     Toast.makeText(PurchaseOrder.this, "ERROR", Toast.LENGTH_SHORT).show(); 
    } 

} 
0

我相信你再次初始化ArrayList外setAdapter码再次检查您的密码和

if(!result.toString().equals("[]")) { 
     for (int i = 0; i < result.length(); i++) { 
       JSONObject source = result.getJSONObject(i); 
       String suppliers = source.getString("SupplierName"); 
       //Toast.makeText(PurchaseOrder.this, "Suppliers: "+suppliers, Toast.LENGTH_SHORT).show(); 

       spinnerArray.add(suppliers); 
       ArrayAdapter<String> adapter = new ArrayAdapter<String>(
           PurchaseOrder.this, android.R.layout.simple_spinner_item, spinnerArray); 

       spinSupplier.setAdapter(adapter); 
     } 

在线下移动

spinnerArray = new ArrayList<String>(); 
此行

if(!result.toString().equals("[]")) 

,它应该工作。

1

有2个问题:

  1. ,你必须的for循环之前初始化数组spinnerArray = new ArrayList<String>();

应该外&线。

  • 其中已设置的适配器spinSupplier.setAdapter(adapter);
  • 应当外&后for环行。

    解决方案

    spinnerArray = new ArrayList<String>(); 
        for (int i = 0; i < result.length(); i++) { 
             JSONObject source = result.getJSONObject(i); 
             String suppliers = source.getString("SupplierName"); 
              //Toast.makeText(PurchaseOrder.this, "Suppliers: "+suppliers, Toast.LENGTH_SHORT).show(); 
    
              spinnerArray.add(suppliers); 
    
    
         } 
         ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                  PurchaseOrder.this, android.R.layout.simple_spinner_item, spinnerArray); 
          spinSupplier.setAdapter(adapter); 
    
    0

    申报spinnerArray之前外界对于循环

    spinnerArray = new ArrayList<String>();

    化妆适配器环后外

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(
               PurchaseOrder.this, android.R.layout.simple_spinner_item, spinnerArray); 
    
             spinSupplier.setAdapter(adapter); 
    
    相关问题