2014-11-25 6 views
-1

Я пытаюсь вернуть массив значений. Я сделал это и смог получить значения в JSONService. Как получить массив значений в моем методе updateUI в OneMap.Java? Я получил сообщение об ошибке nullexception на первой линии 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

создать пустой конструктор для карты, в дополнении к классу карт и создать его экземпляр с пустым конструктором один – Elltz

ответ

1

Вы забываете создать экземпляр Map in OneMap

+0

я не получаю то, что вы имеете в виду .. –

+0

OneMap.java к ----- защищен недействительный OnCreate (Bundle savedInstanceState) { map = new Карта(); } –

0

onPostExecute вызывает updateUI, который использует объект карты, который не был инициализирован. С другой стороны, ваш JSONService.getLocationList возвращает ArrayList<Map>. Вы можете получить элемент из этого массива ArrayList, чтобы заполнить интерфейс.

+0

Как заглянуть в элемент из массива ArrayList? –

+0

вы можете использовать метод 'get (int index) – Blackbelt

Смежные вопросы