0

Bu verileri nasıl alabilirim Model sınıfına getter setter gibi bir model sınıfı yapmak istiyorum ve getter setter'den veri kullanıyorum.Veriyi alan model sınıfı nasıl yapılır

ben yapmak istiyorum böylece Model sınıfı Temelde ben ayrı sınıfta değil değişkenlere saklamak yapmak istiyorum model sınıf

İşte benim kod

class JSONAsyncTask extends AsyncTask<String, Void, Boolean> { 

    ProgressDialog dialog; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     /* dialog = new ProgressDialog(MainActivity.this); 
     dialog.setMessage("Loading, please wait"); 
     dialog.setTitle("Connecting server"); 
     dialog.show(); 
     dialog.setCancelable(false);*/ 
     Toast.makeText(getApplicationContext(), "fetch data from server", Toast.LENGTH_LONG).show(); 

    } 

    @Override 
    protected Boolean doInBackground(String... urls) { 
     try { 

      //------------------>> 

      HttpGet httpGet = new HttpGet(urls[0]); 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpResponse response = httpclient.execute(httpGet); 
      int status = response.getStatusLine().getStatusCode(); 

      if (status == 200) { 
       HttpEntity entity = response.getEntity(); 
       String data = EntityUtils.toString(entity); 


       JSONArray jsonarray = new JSONArray(data); 

       latLngList.clear(); 
       for (int i = 0; i < jsonarray.length(); i++) { 
        JSONObject obj = jsonarray.getJSONObject(i); 

        longitudeServer = obj.getString("longi"); 
        latitudeServer = obj.getString("lati"); 
        uniqueidSserver = obj.getString("uniqueid"); 

        LatLng latLng = new LatLng(Double.parseDouble(latitudeServer), Double.parseDouble(longitudeServer)); 
        latLngList.add(latLng); 

       } 


       return true; 

      } 


     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return false; 


    } 

    protected void onPostExecute(Boolean result) { 

     Toast.makeText(getApplicationContext(), "Receicve data from server", Toast.LENGTH_LONG).show(); 

     if (result == false) { 
      Toast.makeText(getApplicationContext(), "Unable to fetch data from server", Toast.LENGTH_LONG).show(); 

     } 
     try { 

      if (marker != null) { 
       mMap.clear(); 
       Toast.makeText(getApplicationContext(), "Remove", Toast.LENGTH_LONG).show(); 

      } 
      for (LatLng object : latLngList) 

       marker = mMap.addMarker(new MarkerOptions().title("User Name").position(object).icon(BitmapDescriptorFactory.fromResource(R.drawable.female4))); 

      System.out.println(marker.getPosition() + " Marker position......."); 
     } catch (Exception e) { 
      Toast.makeText(MainActivity.this, "Error ", Toast.LENGTH_LONG).show(); 
      // mMap.clear(); 
     } 

    } 

cevap

1

@Guillaume cevabın doğru olmasına rağmen sizin yeni SUNUCUM instanciate ve kullanabilirsiniz onun alıcı/ayarlayıcı yapılır sonra, ben daha iyi ve daha hızlı bir yol önermek istiyorum. Modellerinizi serileştirmek ve JSON'a ayırmak için üçüncü taraf kitaplığı LoganSquare kullanabilirsiniz. Sadece modellerinizi not etmeli ve verileri ayrıştırmak için LoganSquare sınıfını kullanmalısınız. Senin durumunda

böyle olurdu:

@JsonObject 
public class MyServer { 

    @JsonField(name = "longi") 
    public String longitudeServer; 

    @JsonField(name = "lati") 
    public String latitudeServer; 

    @JsonField(name = "uniqueid") 
    public String uniqueidSserver; 

    public MyServer(){ 
    // blank constructor is required 
    } 
} 

Şimdi sunucusundan alınan json yanıtını ayrıştırmak için LoganSquare statik sınıfını kullanın (sınıf adı üzerinde ek açıklamalar ve alanlar çok dikkat):

for (int i = 0; i < jsonarray.length(); i++) { 
    MyServer s = LoganSquare.parse(jsonarray.getJSONObject(i).toString(), MyServer.class); 

    LatLng latLng = new LatLng(Double.parseDouble(s.getLatidude()), Double.parseDouble(s.getLongitude())); // Use your server's methods 
    latLngList.add(latLng); 

} 
+0

Rafy Bhai Burada bir hata aldım lütfen bana yardım edin? (int i = 0; i Ahmad

+0

My Modeli Sınıf olan @JsonObject genel sınıf ModelClass { @JsonField (ad = "Longi") kamu String longitudeServer; @JsonField (name = "lati") public String latitudeServer; @JsonField (name = "uniqueid") public String uniqueidSserver; public String getLongitude() { dönüş longitudeServer; } Genel Dize getLatitude() { dönüş enlemServer; } public String getUniqueId() { return uniqueidSserver; } kamu ModelClass() { // boş kurucu } // ... Daha ayarlayıcı gerekli ve} burada – Ahmad

+0

getter doInBackground yürütülürken bir hata oluştu edilir() ModelClass s = LoganSquare.parse (jsonarray .getJSONObject (i) .toString(), ModelClass.class); – Ahmad

1

olduğunu> Öncelikle istediğiniz modeli bir sınıfa tanımlayın, örneğin bir JSONObject

'den yeni bir örnek oluşturmak için allwing kurucu
class JSONAsyncTask extends AsyncTask<String, Void, Boolean> { 
    class MyServer { 

     private String longitudeServer; 
     private String latitudeServer; 
     private String uniqueidSserver; 

     public MyServer(JSONObject obj){ 
      try{ 
       longitudeServer = obj.getString("longi"); 
       latitudeServer = obj.getString("lati"); 
       uniqueidSserver = obj.getString("uniqueid"); 
      }catch(JSONException jse){ 
       e.printStackTrace(); 
      } 
     } 

     public String getLongitude(){ 
      return longitudeServer; 
     } 

     public void setLongitude(String longitudeServer){ 
      this.longitudeServer = longitudeServer; 
     } 

     //... More setter and getter here 
    } 
    // ... The existing code of your async task here 
} 

bu

for (int i = 0; i < jsonarray.length(); i++) { 
     JSONObject obj = jsonarray.getJSONObject(i); 
     MyServer s = new MyServer(obj); // Create your server from the JSONObject 
     LatLng latLng = new LatLng(Double.parseDouble(s.getLatidude()), Double.parseDouble(s.getLongitude())); // Use your server's methods 
     latLngList.add(latLng); 

    } 
+0

Guillaume Bu hatlar bana hata gösteriyor public MyServer (JSONObject obj) { longitudeServer = obj.getString ("longi"); latitudeServer = obj.getString ("lati"); uniqueidSserver = obj.getString ("uniqueid"); } – Ahmad

+0

Thanksssssssssssssss Guillaume i sorunu tekrar teşekkürler – Ahmad

+0

@Ahmad kamu Sunucum (JSONObject nesnesi obj) çözmek o yapıcı sınıf MyServer, hiçbir bir yöntemdir. Yeni bir sınıf "MyServer" oluşturmalısınız. Bunu, MyServer.java adlı yeni bir dosyada veya varolan kodunuzda bir iç sınıf olarak yapabilirsin ... Verdiğiniz hata mesajı, bir yöntem oluşturmaya çalışıyormuş gibi görünür ... – Nirekin

İlgili konular