SampleActivity.java
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.google.myjson.Gson;
import com.google.myjson.GsonBuilder;
public class SampleActivity extends Activity {
private String SERVER_URL = "";
private ListView lv;
private ProgressDialog progressDialog;
private List<SampleData> sampleData;
private ArrayList<SampleData> sampleList;
private SampleAdapter sampleAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView) findViewById(R.id.listView1);
BackGroundTask bt = new BackGroundTask();
bt.execute();
}
private class BackGroundTask extends AsyncTask<Void, Void, String> {
private static final String TAG = "Error";
@Override
protected void onPreExecute(){
super.onPreExecute();
progressDialog = new ProgressDialog(SampleActivity.this);
progressDialog.setCancelable(false);
progressDialog.setMessage("Loading...");
progressDialog.show();
}
@Override
protected String doInBackground(Void... arg0) {
try {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost( SERVER_URL);
HttpResponse response = client.execute(post);
StatusLine statusLine = response.getStatusLine();
if(statusLine.getStatusCode()==200)
{
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
try {
//Read the server response and attempt to parse it as JSON
Reader reader = new InputStreamReader(content);
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
SampleHeader sampleHeader = gson.fromJson(reader, SampleHeader.class);
content.close();
sampleData= sampleHeader.getSampleData();
handlePostsList(sampleData);
} catch (Exception ex) {
Log.e(TAG, "Failed to parse JSON due to: " + ex);
}
}else
{
Log.e(TAG, "Server responded with status code: " + statusLine.getStatusCode());
}
} catch (Exception e) {
Log.e(TAG, "Failed to parse JSON due to: " + e);
}
return null;
}
@Override
protected void onPostExecute(String result){
super.onPostExecute(result);
progressDialog.dismiss();
}
}// End of Background AsyncTask
private void handlePostsList(final List<SampleData> sampleData) {
this.sampleData = sampleData;
runOnUiThread(new Runnable() {
public void run() {
try {
// logic for retrieve data first time in list view.
sampleList = new ArrayList<SampleData>();
for (int i = 0; i < sampleData.size(); i++) {
sampleList.add(new SampleData(sampleData.get(i).getId().toString()));
}
sampleAdapter= new SampleAdapter(SampleActivity.this, sampleList);
lv.setAdapter(sampleAdapter);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public class SampleAdapter extends BaseAdapter
{
Context context;
List<SampleData> sampleData;
LayoutInflater inflater;
public SampleAdapter(Context context, List<SampleData> sampleData) {
this.context = context;
this.sampleData = sampleData;
}
public class ViewHolder {
TextView txtSample;
}
public int getCount() {
return sampleData.size();
}
public Object getItem(int position) {
return sampleData.get(position);
}
public long getItemId(int position) {
return sampleData.indexOf(getItem(position));
}
public View getView(final int position, View convertView, ViewGroup parent)
{
final ViewHolder holder;
LayoutInflater mInflater = (LayoutInflater)
context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.custom_row, null);
holder = new ViewHolder();
holder.txtSample = (TextView) convertView.findViewById(R.id.textView1);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
holder.txtSample.setText(sampleData.get(position).getId());
return convertView;
}
}
}
SampleData.java
import com.google.myjson.annotations.SerializedName;
public class SampleData
{
@SerializedName("id")
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public SampleData(String id) {
super();
this.id = id;
}
}
SampleHeader.java
import java.util.List;
import com.google.myjson.annotations.SerializedName;
public class SampleHeader {
@SerializedName("students")
private List<SampleData> sampleData;
public List<SampleData> getSampleData() {
return sampleData;
}
public void setSampleData(List<SampleData> sampleData) {
this.sampleData = sampleData;
}
}