2017-09-22 3 views
0

Ich erstelle eine App, um Json-Daten vom Web-Service zu erhalten und an Balkendiagramm zu binden.Binden von Json-Daten an Balkendiagramm

Ich weiß nicht, wie das geht. verwende MPAndroid Bibliothek für Diagramme.

helfen Sie mir Balkendiagrammdaten aus JSON-Daten zu binden.

Web-Service:

[ 
    { 
    "NAME": "601 GRIETA EN CUERPO", 
    "PERCENTAGE": "46" 
    }, 
    { 
    "NAME": "77 ENFRIAMIENTO O DUNTING", 
    "PERCENTAGE": "18" 
    }, 
    { 
    "NAME": "78 PRECALENTAMIENTO", 
    "PERCENTAGE": "18" 
    }, 
    { 
    "NAME": "209 MAL MANEJO", 
    "PERCENTAGE": "9" 
    }, 
    { 
    "NAME": "92 FUGA DE MANOMETRO", 
    "PERCENTAGE": "9" 
    } 
] 

Barchart. java

package com.example.saravanakumars.chart; 

/** 
* Created by saravanakumars on 9/18/2017. 
*/ 

import android.app.ProgressDialog; 
import android.content.DialogInterface; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.v7.app.AlertDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.view.ContextMenu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.github.mikephil.charting.charts.BarChart; 
import com.github.mikephil.charting.data.BarData; 
import com.github.mikephil.charting.data.BarDataSet; 
import com.github.mikephil.charting.data.BarEntry; 
import com.github.mikephil.charting.utils.ColorTemplate; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.util.ArrayList; 
import java.util.HashMap; 

public class barchart extends AppCompatActivity { 

    BarChart chart ; 
    ArrayList<BarEntry> BARENTRY ; 
    ArrayList<String> BarEntryLabels ; 
    BarDataSet Bardataset ; 
    BarData BARDATA ; 

    private String TAG = MainActivity.class.getSimpleName(); 

    private ProgressDialog pDialog; 
    private ListView lv; 
    private static String url = "http://113.193.30.155/MobileService/MobileService.asmx/GetSampleData"; 

    ArrayList<HashMap<String, String>> contactList; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.bar_chart); 


     contactList = new ArrayList<>(); 

     lv = (ListView) findViewById(R.id.list); 

     new GetContacts().execute(); 

//  bar chart 

     chart = (BarChart) findViewById(R.id.barchart); 
     BARENTRY = new ArrayList<>(); 
     BarEntryLabels = new ArrayList<String>(); 
     AddValuesToBARENTRY(); 
     AddValuesToBarEntryLabels(); 
     Bardataset = new BarDataSet(BARENTRY, "Projects"); 
     BARDATA = new BarData(BarEntryLabels, Bardataset); 
     Bardataset.setColors(ColorTemplate.COLORFUL_COLORS); 
     chart.setData(BARDATA); 
     chart.animateY(3000); 
    } 
     }); 
//  registerForContextMenu(txt1); 
    } 

@Override 
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) 
    { 
     super.onCreateContextMenu(menu, v, menuInfo); 
     MenuInflater inflater = getMenuInflater(); 
     menu.setHeaderTitle("Select The Action"); 
     inflater.inflate(R.menu.popup_menu,menu); 
    } 
    @Override 
    public boolean onContextItemSelected(MenuItem item){ 
     switch (item.getItemId()) { 
      case R.id.one: 
       Toast.makeText(barchart.this,"You Clicked : " + item.getTitle(),Toast.LENGTH_SHORT).show(); 
       break; 
      case R.id.two: 
       Toast.makeText(barchart.this,"You Clicked : " + item.getTitle(),Toast.LENGTH_SHORT).show(); 
       break; 

     } 
     return true; 
    } 
    private class GetContacts extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      // Showing progress dialog 
      pDialog = new ProgressDialog(barchart.this); 
      pDialog.setMessage("Please wait..."); 
      pDialog.setCancelable(false); 
      pDialog.show(); 

     } 

     @Override 
     protected Void doInBackground(Void... arg0) { 
      HttpHandler sh = new HttpHandler(); 

      // Making a request to url and getting response 
      String jsonStr = sh.makeServiceCall(url); 

      Log.e(TAG, "Response from url: " + jsonStr); 

      if (jsonStr != null) { 
       try { 

        JSONArray array = new JSONArray(jsonStr); 
        for (int i = 0; i < array.length(); i++) { 
         JSONObject object = (JSONObject) array.get(i); 
         String NAME = object.getString("NAME"); 
         String PERCENTAGE = object.getString("PERCENTAGE"); 
         int minqty = Integer.parseInt(object.getString("PERCENTAGE")); 
         HashMap<String, String> contact = new HashMap<>(); 

         BARENTRY.add(minqty); 
         contact.put("NAME", NAME); 
         contact.put("PERCENTAGE", PERCENTAGE); 

         // adding contact to contact list 
         contactList.add(contact); 
        } 

       } catch (final JSONException e) { 
        Log.e(TAG, "Json parsing error: " + e.getMessage()); 
        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          Toast.makeText(getApplicationContext(), 
            "Json parsing error: " + e.getMessage(), 
            Toast.LENGTH_LONG) 
            .show(); 
         } 
        }); 

       } 
      } else { 
       Log.e(TAG, "Couldn't get json from server."); 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         Toast.makeText(getApplicationContext(), 
           "Couldn't get json from server. Check LogCat for possible errors!", 
           Toast.LENGTH_LONG) 
           .show(); 
        } 
       }); 

      } 

      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      super.onPostExecute(result); 
      // Dismiss the progress dialog 
      if (pDialog.isShowing()) 
       pDialog.dismiss(); 
      /** 
     } 

    } 

} 
+0

Sie zu machen müssen BarEntry ArrayList aus JSON erstellen. – Anil

+0

Ich weiß nicht, wie das geht. kannst du helfen. – Saro

Antwort

0

Verwenden Gson Objekt aus Ihrem JSon zu machen:

YourModelClass yourModelClassObject = gson.fromJson(args[0].toString(), YourModelClass.class); 

dann Arraylist bekommen und es zu Diagrammen Link folgender Datensatz Verwenden liefern pojo von Ihrem JSON http://www.jsonschema2pojo.org/