2014-11-25 89 views
-1

我想返回一個值的數組。我這樣做,並設法檢索JSONService中的值。如何在OneMap.Java中的方法updateUI中檢索值的數組?我在updateUI()的第一行從ArrayList返回值Android

OneMap.java

public class OneMap extends Activity implements OnSingleTapListener 
{ 
    private Map map=null; 
    private ArrayList<Map> list = null; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     loadData(); 
    } 
    private void loadData() { 
     new GetCoordinationsDetailsTask().execute(); 
    } 
    private class GetCoordinationsDetailsTask extends AsyncTask<String, String, Void> { 
    @Override 
    protected void onPreExecute() { 

    }; 

    @Override 
    protected Void doInBackground(String... params) { 
     list=JSONService.getLocationList(); 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     updateUI(); 
    } 
} 

private void updateUI() { 
    String name=map.getName(); 
    String region=map.getRegion(); 
    String iconurl=map.getIconURL(); 
    String address=map.getAddress(); 
    String contactno=map.getContactNo(); 
    String operatinghrs=map.getOperatingHrs(); 
    String coordinates=map.getCoordinates(); 

JSONService.java

public static ArrayList<Map> getLocationList() { 
    String url = second_URL + "storelocator.php"; 
    String method = GET; 
    List<NameValuePair> params = new ArrayList<NameValuePair>(); 
    JSONObject result = makeHttpRequest(url, method, params); 

    try { 
     Log.d("result",result.toString()); 
     if (result.getInt("success") == 1) { 
      JSONArray jLocationList = result.getJSONArray("store_list"); 
      ArrayList<Map> list = new ArrayList<Map>(); 

      int count = jLocationList.length(); 
      for (int i = 0; i < count; i++) { 
       JSONObject jlocation = jLocationList.getJSONObject(i); 
       String LocationName=jlocation.getString("mall"); 
       String region=jlocation.getString("region"); 
       String iconURL=jlocation.getString("image"); 
       String address=jlocation.getString("address"); 
       String telephone=jlocation.getString("contact"); 
       String operatinghrs=jlocation.getString("Operating"); 
       String coordinates=jlocation.getString("coordinates"); 
       Map location= new Map(LocationName,region,iconURL,address,telephone,operatinghrs,coordinates); 
       //list.add(location); 
      } 
      return list; 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

Map.java

public class Map { 

private String name=null; 
private String region=null; 
private String iconURL=null; 
private String address=null; 
private String contactNo=null; 
private String operatinghrs=null; 
private String coordinates=null; 


public Map(String name,String region,String iconURL,String address, String contactNo, String operatinghrs,String coordinates) 
{ 
    this.name=name; 
    this.region=region; 
    this.iconURL=iconURL; 
    this.address=address; 
    this.contactNo=contactNo; 
    this.operatinghrs=operatinghrs; 
    this.coordinates=coordinates; 
} 

public String getName() 
{ 
    return name; 
} 
public String getRegion() 
{ 
    return region; 
} 
public String getIconURL() 
{ 
    return iconURL; 
} 
public String getAddress() 
{ 
    return address; 
} 
public String getContactNo() 
{ 
    return contactNo; 
} 
public String getOperatingHrs() 
{ 
    return operatinghrs; 
} 
public String getCoordinates() 
{ 
    return coordinates; 
} 
} 
+0

除了你的Map類創建一個空的構造函數,並用空的構造函數實例化一個 – Elltz 2014-11-25 09:11:49

回答

1

你忘記了一個nullexception錯誤在OneMap中創建Map實例

+0

我沒有明白你的意思.. – 2014-11-25 09:17:55

+0

OneMap.java to ----- protected void onCreate(Bundle savedInstanceState) { map = new Map(); } – 2014-11-25 09:18:33

0

onPostExecute調用updateUI,它使用未初始化的地圖對象。另一方面,您的JSONService.getLocationList返回ArrayList<Map>。你可以從這個ArrayList獲取元素來填充UI。

+0

如何從ArrayList中查看元素? – 2014-11-25 10:16:24

+0

你可以使用'get(int index)'方法 – Blackbelt 2014-11-25 10:17:38