lunes, 23 de octubre de 2017

mv2017

import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

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


public class JSONAdapter extends BaseAdapter {
    private JSONArray data;
    private Activity activity;

    public JSONAdapter(JSONArray data, Activity activity){
        this.data = data;
        this.activity = activity;
    }

    @Override    public int getCount() {
        return data.length();
    }

    @Override    public Object getItem(int position) {
        try{
            return data.getJSONObject(position);
        }catch(JSONException joe){
            joe.printStackTrace();
        }
        return null;
    }

    @Override    public long getItemId(int position) {
        return position;
    }

    @Override    public View getView(int position, View convertView, ViewGroup parent) {
        if(convertView == null){
            convertView = activity.getLayoutInflater().inflate(R.layout.row,null);
        }
        TextView name = (TextView) convertView.findViewById(R.id.name);
        TextView hobby = (TextView) convertView.findViewById(R.id.hobby);

        try{
            JSONObject friend = data.getJSONObject(position);
            name.setText(friend.getString("name"));
            hobby.setText(friend.getString("hobby"));
        }catch(JSONException joe){
            joe.printStackTrace();
        }
        return convertView;
    }
}



import android.os.AsyncTask;
import android.util.Log;

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

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;


public class JSONRequest extends AsyncTask<String, Void, JSONArray> {

    private JSONRequestCallback listener;

    public JSONRequest(JSONRequestCallback listener){this.listener = listener;}

    @Override    protected JSONArray doInBackground(String... params) {
        JSONArray result = null;
        try{
            URL url = new URL(params[0]);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            int code = connection.getResponseCode();
            if(code == HttpURLConnection.HTTP_OK){
                InputStream is = connection.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(is));

                StringBuilder sb = new StringBuilder();
                String currentLine = "";

                while((currentLine = br.readLine()) != null){
                    Log.d("JSON RECEIVED",currentLine);
                    sb.append(currentLine);
                }

                result = new JSONArray(sb.toString());

            }
        }catch(Exception e){
            e.printStackTrace();
        }
        return result;
    }


    @Override    protected void onPostExecute(JSONArray jsonArray) {
        super.onPostExecute(jsonArray);
        listener.done(jsonArray);
    }

    public interface JSONRequestCallback{
        void done(JSONArray jsonArray);
    }
}

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class Friend extends AppCompatActivity {

    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_friend);

        Intent i = getIntent();
        TextView name = (TextView) findViewById(R.id.textView_name);
        TextView hobby = (TextView) findViewById(R.id.textView_hobby);

        name.setText("Name: "+i.getStringExtra("name"));
        hobby.setText("Hobby: "+i.getStringExtra("hobby"));

    }
}

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;

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

public class MainActivity extends AppCompatActivity implements JSONRequest.JSONRequestCallback, AdapterView.OnItemClickListener {

    ListView list;
    JSONAdapter jsonAdapter;
    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        list = (ListView) findViewById(R.id.list_view);
    }


    public void request(View v){
        JSONRequest r = new JSONRequest(this);
        r.execute("https://api.myjson.com/bins/1bzfjz");//this is where i put the json    }

    @Override    public void done(JSONArray jsonArray) {
        Toast.makeText(this, "DONE JSON-ing", Toast.LENGTH_SHORT).show();
        try{
            for(int i = 0; i < jsonArray.length(); i++){
                Log.d("JSON",i+" "+jsonArray.getJSONObject(i).get("hobby"));
            }
            jsonAdapter = new JSONAdapter(jsonArray, this);
            list.setAdapter(jsonAdapter);
            list.setOnItemClickListener(this);
        }catch(JSONException json){
            json.printStackTrace();
        }
    }

    @Override    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(this, "Clicked!", Toast.LENGTH_SHORT).show();
        try{
            Intent i = new Intent(this, Friend.class);
            JSONObject json = (JSONObject)parent.getItemAtPosition(position);
            i.putExtra("name",json.getString("name"));
            i.putExtra("hobby",json.getString("hobby"));
            Toast.makeText(this, json.getString("name"), Toast.LENGTH_SHORT).show();
            startActivity(i);
        }catch(JSONException joe){
            joe.printStackTrace();
        }
    }
}