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();
}
}
}