Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.romain.lastfmtopartists;
- import android.app.ProgressDialog;
- import android.content.Context;
- import android.net.ConnectivityManager;
- import android.net.NetworkInfo;
- import android.os.AsyncTask;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.ListAdapter;
- import android.widget.ListView;
- import android.widget.SimpleAdapter;
- //import android.widget.TextView;
- import android.widget.Toast;
- import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- import java.util.ArrayList;
- import java.util.HashMap;
- public class ViewFM extends AppCompatActivity {
- private String TAG = ViewFM.class.getSimpleName();
- public static final String urlString = "http://ws.audioscrobbler.com/2.0/?method=geo.gettopartists&country=belgium&api_key=32ef5df0e36797b605e205529058f3b8&format=json&limit=";
- private String toSend = urlString;
- //private ModelFM model;
- private Button but;
- private EditText editTxt;
- // barre de progression du téléchargement
- private ProgressDialog dialog;
- private ListView lv;
- // contient les différents artistes et le nombre d'écoutes
- private ArrayList<HashMap<String,String>> artistList;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- //model = ((Builder) getApplication()).getModel();
- lv = (ListView) findViewById(R.id.list);
- artistList = new ArrayList<>();
- initOnclick();
- }
- /**** Method who initialize the onClicks ****/
- public void initOnclick(){
- but = (Button) findViewById(R.id.button);
- but.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkInfo nInfo = connMgr.getActiveNetworkInfo();
- if(nInfo != null || nInfo.isConnected()){
- /** connexion ok **/
- but.setEnabled(true);
- editTxt = (EditText) findViewById(R.id.editText);
- String input = editTxt.getText().toString();
- toSend+=input;
- Log.e(TAG,toSend);
- new DownLoadLastFm().execute(toSend);
- toSend = urlString;
- }else {
- //
- /** connexion ko**/
- but.setEnabled(false);
- Context context = getApplicationContext();
- CharSequence text = nInfo.getReason();
- //todo print error in a toast, que renvoie getReason?
- int duration = Toast.LENGTH_SHORT;
- Toast toast = Toast.makeText(context, text, duration);
- toast.show();
- }
- }
- });
- }
- /**** Inner class who is in charge for download the data ****/
- private class DownLoadLastFm extends AsyncTask<String, Void,Void>{
- @Override
- protected void onPreExecute() {
- super.onPreExecute();
- // on affiche la barre de progression
- dialog = new ProgressDialog(ViewFM.this);
- dialog.setMessage("Patientez svp ...");
- dialog.setCancelable(false);
- dialog.show();
- }
- @Override
- protected Void doInBackground(String... urls) {
- //todo passer l'url en param
- HttpHandler httpH = new HttpHandler();
- Log.e(TAG,urls[1]);
- String jsonStr = httpH.makeHttpRequest(urls[1]);
- Log.e(TAG,"Response from url "+jsonStr);
- if(jsonStr != null){
- try {
- JSONObject jsonObject = new JSONObject(jsonStr).getJSONObject("topartists");
- JSONArray artists = jsonObject.getJSONArray("artist");
- Log.e(TAG,"contenu de l'array"+artists.toString());
- for (int i=0;i<artists.length();i++){
- JSONObject jo = artists.getJSONObject(i);
- String name = jo.getString("name");
- String listeners = jo.getString("listeners");
- HashMap<String,String> tmp = new HashMap<>();
- tmp.put("name", name);
- tmp.put("listeners", listeners);
- artistList.add(tmp);
- }
- } catch (final JSONException e){
- Log.e(TAG, "Json parsing error: " + e.getStackTrace());
- 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 s) {
- super.onPostExecute(s);
- // on cache la barre
- if(dialog.isShowing()){
- dialog.dismiss();
- }
- /** On met à jour les données json parsées avec un adapteur **/
- ListAdapter adapter = new SimpleAdapter(ViewFM.this,artistList,R.layout.list_item,
- new String[]{"name","listeners"}, new int[]{R.id.name, R.id.listeners});
- lv.setAdapter(adapter);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement