2016-07-21 46 views
0

json數據已獲得,我想解析它並將其顯示在listview.I中使用了適配器方法。 這裏是我的代碼:無法打印Android應用程序中的json數據列表視圖

DisplayListView類:

public class DisplayListView extends AppCompatActivity { 
     String json_string; 
     JSONObject jsonObject =null; 
     JSONArray jsonArray=null; 
     dataAdapter dataAdapter; 
     ListView listView; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.displaylistview_layout); 
      listView=(ListView) findViewById(R.id.listview); 
      listView.setAdapter(dataAdapter); 
      dataAdapter=new dataAdapter(this,R.layout.row_layout); 
      json_string=getIntent().getExtras().getString("json_data"); 
      Log.w("var32", json_string); 
      try { 
       jsonArray = new JSONArray(json_string); 
       jsonObject = new JSONObject(); 
       jsonObject.put("arrayName",jsonArray); 
       jsonArray=jsonObject.getJSONArray("arrayName"); 
       int count=0; 
       String LabLocation,RackLocation,ShelfLocation,fourBid,Cluster,fourBookingName,SoftwareVersion,HardwareType,AssetNo,SerialNO; 


while (count<jsonObject.length()){ 
      JSONObject JO=jsonArray.getJSONObject(count); 
      LabLocation=JO.getString("LabLocation"); 
      RackLocation=JO.getString("RackLocation"); 
      ShelfLocation=JO.getString("ShelfLocation"); 
      fourBid=JO.getString("fourBid"); 
      Cluster=JO.getString("Cluster"); 
      fourBookingName=JO.getString("fourBookingName"); 
      SoftwareVersion=JO.getString("SoftwareVersion"); 
      HardwareType=JO.getString("HardwareType"); 
      AssetNo=JO.getString("AssetNo"); 
      SerialNO=JO.getString("SerialNO"); 
      data data=new data(LabLocation,RackLocation,ShelfLocation,fourBid,Cluster,fourBookingName,SoftwareVersion,HardwareType,AssetNo,SerialNO); 
      Log.w("var34", "Arguments Verified"); 
      dataAdapter.add(data); 
      count++; 
     } 
     listView.setAdapter(dataAdapter); 
     dataAdapter.notifyDataSetChanged(); 

    }catch (JSONException e){ 
       Log.w("var33", "error JSON exception"); 
       e.printStackTrace(); 
      } 
     } 
    } 

適配器類別:

public class dataAdapter extends ArrayAdapter { 
    List list=new ArrayList(); 
    public dataAdapter(Context context, int resource) { 
     super(context, resource); 
    } 

    public void add(data object) { 
     super.add(object); 
     list.add(object); 
    } 

    @Override 
    public int getCount() { 
     return list.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return list.get(position); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row; 
     row=convertView; 
     dataHolder dataHolder; 
     if (row==null){ 
      LayoutInflater layoutInflater=(LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      row=layoutInflater.inflate(R.layout.row_layout,parent,false); 
      dataHolder = new dataHolder(); 
      dataHolder.tx_LabLocation=(TextView) row.findViewById(R.id.tx_LabLocation); 
      dataHolder.tx_RackLocation=(TextView) row.findViewById(R.id.tx_RackLocation); 
      dataHolder.tx_ShelfLocation=(TextView) row.findViewById(R.id.tx_ShelfLocation); 
      dataHolder.tx_fourBid=(TextView) row.findViewById(R.id.tx_fourBid); 
      dataHolder.tx_Cluster=(TextView) row.findViewById(R.id.tx_Cluster); 
      dataHolder.tx_fourBookingName=(TextView) row.findViewById(R.id.tx_fourBookingName); 
      dataHolder.tx_SoftwareVersion=(TextView) row.findViewById(R.id.tx_SoftwareVersion); 
      dataHolder.tx_HardwareType=(TextView) row.findViewById(R.id.tx_HardwareType); 
      dataHolder.tx_AssetNo=(TextView) row.findViewById(R.id.tx_AssetNo); 
      dataHolder.tx_SerialNO=(TextView) row.findViewById(R.id.tx_SerialNO); 
      row.setTag(dataHolder); 
     } else { 
      dataHolder=(dataHolder) row.getTag(); 
     } 
     data data = (data) this.getItem(position); 
     dataHolder.tx_LabLocation.setText(data.getLabLocation()); 
     dataHolder.tx_RackLocation.setText(data.getRackLocation()); 
     dataHolder.tx_ShelfLocation.setText(data.getShelfLocation()); 
     dataHolder.tx_fourBid.setText(data.getFourBid()); 
     dataHolder.tx_Cluster.setText(data.getCluster()); 
     dataHolder.tx_fourBookingName.setText(data.getFourBookingName()); 
     dataHolder.tx_SoftwareVersion.setText(data.getSoftwareVersion()); 
     dataHolder.tx_HardwareType.setText(data.getHardwareType()); 
     dataHolder.tx_AssetNo.setText(data.getAssetNo()); 
     dataHolder.tx_SerialNO.setText(data.getSerialNO()); 
     return row; 
    } 

    static class dataHolder { 
     TextView tx_LabLocation,tx_RackLocation,tx_ShelfLocation,tx_fourBid,tx_Cluster,tx_fourBookingName,tx_SoftwareVersion,tx_HardwareType,tx_AssetNo,tx_SerialNO; 
    } 
} 

data.java:

public class data { 

    private String LabLocation,RackLocation,ShelfLocation,fourBid,Cluster,fourBookingName,SoftwareVersion,HardwareType,AssetNo,SerialNO; 

    public data (String LabLocation,String RackLocation,String ShelfLocation,String fourBid,String Cluster,String fourBookingName,String SoftwareVersion,String HardwareType,String AssetNo,String SerialNO) { 
     this.setLabLocation(LabLocation); 
     this.setRackLocation(RackLocation); 
     this.setShelfLocation(ShelfLocation); 
     this.setFourBid(fourBid); 
     this.setCluster(Cluster); 
     this.setFourBookingName(fourBookingName); 
     this.setSoftwareVersion(SoftwareVersion); 
     this.setHardwareType(HardwareType); 
     this.setAssetNo(AssetNo); 
     this.setSerialNO(SerialNO); 

    } 

    public String getLabLocation() { 
     System.out.println("LabLocation" +LabLocation); 
     return LabLocation; 
    } 

    public void setLabLocation(String labLocation) { 
     LabLocation = labLocation; 
    } 

    public String getRackLocation() { 
     return RackLocation; 
    } 

    public void setRackLocation(String rackLocation) { 
     RackLocation = rackLocation; 
    } 

    public String getShelfLocation() { 
     return ShelfLocation; 
    } 

    public void setShelfLocation(String shelfLocation) { 
     ShelfLocation = shelfLocation; 
    } 

    public String getFourBid() { 
     return fourBid; 
    } 

    public void setFourBid(String fourBid) { 
     this.fourBid = fourBid; 
    } 

    public String getCluster() { 
     return Cluster; 
    } 

    public void setCluster(String cluster) { 
     Cluster = cluster; 
    } 

    public String getFourBookingName() { 
     return fourBookingName; 
    } 

    public void setFourBookingName(String fourBookingName) { 
     this.fourBookingName = fourBookingName; 
    } 

    public String getSoftwareVersion() { 
     return SoftwareVersion; 
    } 

    public void setSoftwareVersion(String softwareVersion) { 
     SoftwareVersion = softwareVersion; 
    } 

    public String getHardwareType() { 
     return HardwareType; 
    } 

    public void setHardwareType(String hardwareType) { 
     HardwareType = hardwareType; 
    } 

    public String getAssetNo() { 
     return AssetNo; 
    } 

    public void setAssetNo(String assetNo) { 
     AssetNo = assetNo; 
    } 

    public String getSerialNO() { 
     return SerialNO; 
    } 

    public void setSerialNO(String serialNO) { 
     SerialNO = serialNO; 
    } 
} 

沒有解析後拋出錯誤。它只會將新頁面打開。 謝謝。

row_layout XML代碼:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="75dp"> 

    <TextView 
     android:layout_width="120dp" 
     android:layout_height="match_parent" 
     android:id="@+id/tx_LabLocation" 
     android:layout_alignParentLeft="true" 
     android:text="Albyn" 
     android:gravity="center" 
     android:textAppearance="?android:textAppearanceLarge" 
     /> 
    <TextView 
     android:layout_width="120dp" 
     android:layout_height="match_parent" 
     android:id="@+id/tx_RackLocation" 
     android:layout_alignParentLeft="true" 
     android:text="Albyn" 
     android:gravity="center" 
     android:textAppearance="?android:textAppearanceLarge" 
     /> 
    <TextView 
     android:layout_width="120dp" 
     android:layout_height="match_parent" 
     android:id="@+id/tx_ShelfLocation" 
     android:layout_alignParentLeft="true" 
     android:text="Albyn" 
     android:gravity="center" 
     android:textAppearance="?android:textAppearanceLarge" 
     /> 
    <TextView 
     android:layout_width="120dp" 
     android:layout_height="match_parent" 
     android:id="@+id/tx_fourBid" 
     android:layout_alignParentLeft="true" 
     android:text="Albyn" 
     android:gravity="center" 
     android:textAppearance="?android:textAppearanceLarge" 
     /> 
    <TextView 
     android:layout_width="120dp" 
     android:layout_height="match_parent" 
     android:id="@+id/tx_Cluster" 
     android:layout_alignParentLeft="true" 
     android:text="Albyn" 
     android:gravity="center" 
     android:textAppearance="?android:textAppearanceLarge" 
     /> 
    <TextView 
     android:layout_width="120dp" 
     android:layout_height="match_parent" 
     android:id="@+id/tx_fourBookingName" 
     android:layout_alignParentLeft="true" 
     android:text="Albyn" 
     android:gravity="center" 
     android:textAppearance="?android:textAppearanceLarge" 
     /> 
    <TextView 
     android:layout_width="120dp" 
     android:layout_height="match_parent" 
     android:id="@+id/tx_SoftwareVersion" 
     android:layout_alignParentLeft="true" 
     android:text="Albyn" 
     android:gravity="center" 
     android:textAppearance="?android:textAppearanceLarge" 
     /> 
    <TextView 
     android:layout_width="120dp" 
     android:layout_height="match_parent" 
     android:id="@+id/tx_HardwareType" 
     android:layout_alignParentLeft="true" 
     android:text="Albyn" 
     android:gravity="center" 
     android:textAppearance="?android:textAppearanceLarge" 
     /> 
    <TextView 
     android:layout_width="120dp" 
     android:layout_height="match_parent" 
     android:id="@+id/tx_AssetNo" 
     android:layout_alignParentLeft="true" 
     android:text="Albyn" 
     android:gravity="center" 
     android:textAppearance="?android:textAppearanceLarge" 
     /> 
    <TextView 
     android:layout_width="120dp" 
     android:layout_height="match_parent" 
     android:id="@+id/tx_SerialNO" 
     android:layout_alignParentLeft="true" 
     android:text="Albyn" 
     android:gravity="center" 
     android:textAppearance="?android:textAppearanceLarge" 
     /> 



</RelativeLayout> 

displaylistview_layout XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.albbaby.nokialabs.DisplayListView"> 

    <ListView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/listview" 
    /> 

</RelativeLayout> 
+0

將適配器設置爲獲取json響應後列表視圖。 – Bee

+0

你可以在填充列表後調用dataAdapter.notifyDataSetChanged()嗎? –

+0

您正在設置爲空的適配器,並將其綁定到列表視圖。你需要在解析完成後設置適配器 –

回答

0

後,我已經顯示在文本格式的JSON數據只是通過返回他們應該做。 return; 這將是我在android應用程序中顯示信息的主要目的。

json_string=responseOutput.toString(); 
JSONArray jsonArray = new JSONArray(json_string); 
       int count =0; 
       count= jsonArray.length(); 
       JSONObject jobj = jsonArray.getJSONObject(0); 
       String LabLocation = jobj.getString("LabLocation"); 
       String RackLocation = jobj.getString("RackLocation"); 
       String ShelfLocation = jobj.getString("ShelfLocation"); 
       String fourBid = jobj.getString("fourBid"); 
       String Cluster = jobj.getString("Cluster"); 
       String fourBookingName = jobj.getString("fourBookingName"); 
       String SoftwareVersion = jobj.getString("SoftwareVersion"); 
       String HardwareType = jobj.getString("HardwareType"); 
       String AssetNo = jobj.getString("AssetNo"); 
       String SerialNO = jobj.getString("SerialNO"); 
       String Location = jobj.getString("Location"); 

       return " "+"LabLocation" + ":" +" " +LabLocation + "\n" + " "+"RackLocation" + ":" +" " +RackLocation 
         + "\n" + " "+"ShelfLocation" + ":" +" " +ShelfLocation + "\n" + " "+"4BookingID" + ":" +" " +fourBid 
         + "\n" + " "+"Cluster" + ":" +" " +Cluster + "\n" + " "+"4BookingName" + ":" +" " +fourBookingName 
         + "\n" + " "+"SoftwareVersion" + ":" +" " +SoftwareVersion + "\n" + " "+"HardwareType" + ":" +" " +HardwareType 
         + "\n" + " "+"AssetNo" + ":" +" " +AssetNo + "\n" + " "+"SerialNO" + ":" +" " +SerialNO + "\n" + " "+"Location" + ":" +" " +Location; 
      } 
0

寫入該行listView.setAdapter(DataAdapter的); while循環之後

在將數據添加到dataAdapter之前,您正在設置適配器。

的數據添加

0
public class DisplayListView extends AppCompatActivity { 
String json_string; 
JSONObject jsonObject =null; 
JSONArray jsonArray=null; 
dataAdapter dataAdapter; 
ListView listView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.displaylistview_layout); 
    listView=(ListView) findViewById(R.id.listview); 
    //listView.setAdapter(dataAdapter); // set this line after your parsing is done 
    dataAdapter=new dataAdapter(this,R.layout.row_layout); 
    listView.setAdapter(dataAdapter); 
    json_string=getIntent().getExtras().getString("json_data"); 
    Log.w("var32", json_string); 
    try { 
     jsonArray = new JSONArray(json_string); 
     jsonObject = new JSONObject(); 
     jsonObject.put("arrayName",jsonArray); 
     jsonArray=jsonObject.getJSONArray("arrayName"); 
     int count=0; 
     String LabLocation,RackLocation,ShelfLocation,fourBid,Cluster,fourBookingName,SoftwareVersion,HardwareType,AssetNo,SerialNO; 
     while (count<jsonObject.length()){ 
      JSONObject JO=jsonArray.getJSONObject(count); 
      LabLocation=JO.getString("LabLocation"); 
      RackLocation=JO.getString("RackLocation"); 
      ShelfLocation=JO.getString("ShelfLocation"); 
      fourBid=JO.getString("fourBid"); 
      Cluster=JO.getString("Cluster"); 
      fourBookingName=JO.getString("fourBookingName"); 
      SoftwareVersion=JO.getString("SoftwareVersion"); 
      HardwareType=JO.getString("HardwareType"); 
      AssetNo=JO.getString("AssetNo"); 
      SerialNO=JO.getString("SerialNO"); 
      Log.w("var34", "Arguments Passed"); 
      data data=new data(LabLocation,RackLocation,ShelfLocation,fourBid,Cluster,fourBookingName,SoftwareVersion,HardwareType,AssetNo,SerialNO); 
      dataAdapter.add(data); 
      count++; 
     } 

    listView.notifyDataSetChanged(); // or notify it if you have previously added it 

    }catch (JSONException e){ 
     Log.w("var33", "error JSON exception"); 
     e.printStackTrace(); 
    } 
} 

}

+0

我已按照建議添加。輸出一個顯示在另一個上面。 我已經添加了xml代碼 – Alby

相關問題