CustomAdapter File included...
1.Initializing ArrayList.
2.Initializing ListView.
3.Grapping the Data from URL and storing in ArrayList
4.Setting ListView with CustomAdapter
5.Please check the CustomAdapter code which below the MainActivity..
public class Screen2 extends AppCompatActivity {
ProgressDialog pDialog;
ArrayList<Information> record_list;
ListView list_view;
CustomAdapter listAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.screen2);
record_list=new ArrayList<Information>();
list_view=(ListView) findViewById(R.id.list_view);
new Test().execute();
}
public class Test extends AsyncTask<String, Void, ArrayList<Information>> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
pDialog = new ProgressDialog(Screen2.this);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected ArrayList<Information> doInBackground(String... params) {
String jsonStr = makeServiceCall();
try {
JSONArray jsonArray=new JSONArray(jsonStr);
for(int i=0;i<jsonArray.length();i++){
JSONObject jsonObject=jsonArray.getJSONObject(i);
String id=jsonObject.getString("id");
String name=jsonObject.getString("label");
String email=jsonObject.getString("email");
Information information=new Information(id,name,email);
record_list.add(information);
return record_list;
}
System.out.println(jsonStr);
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(ArrayList<Information> s) {
super.onPostExecute(s);
// Dismiss the progress dialog
//listAdapter=new CustomAdapter(Screen2.this,record_list);
listAdapter=new CustomAdapter(Screen2.this,record_list);
list_view.setAdapter(listAdapter);
if (pDialog.isShowing())
pDialog.dismiss();
/**
* Updating parsed JSON data into ListView
* */
}
public String makeServiceCall(){
String response = null;
try {
URL url = new URL("http://192.168.1.109:9000/tasks2");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
// read the response
InputStream in = new BufferedInputStream(conn.getInputStream());
response = convertStreamToString(in);
} catch (MalformedURLException e) {
System.out.println("MalformedURLException: " + e.getMessage());
} catch (ProtocolException e) {
System.out.println("MalformedURLException: " + e.getMessage());
} catch (IOException e) {
System.out.println("MalformedURLException: " + e.getMessage());
} catch (Exception e) {
System.out.println("MalformedURLException: " + e.getMessage());
}
return response;
}
private String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line;
try {
while ((line = reader.readLine()) != null) {
sb.append(line).append('\n');
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println(sb);
return sb.toString();
}
}
}
CustomAdapter.java:(Here is my CustomAdapter File) I don't see any error in this file too...
public class CustomAdapter extends ArrayAdapter<Information> {
public CustomAdapter(Context c, ArrayList<Information> record) {
super(c, R.layout.custom_row, record);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Get the data item for this position
Information information = getItem(position);
//LayoutInflater inflater=LayoutInflater.from(getContext());
// Check if an existing view is being reused, otherwise inflate the view
convertView = LayoutInflater.from(getContext()).inflate(R.layout.custom_row, parent, false);
// Lookup view for data population
TextView record_id = (TextView) convertView.findViewById(R.id.record_id);
TextView record_name = (TextView) convertView.findViewById(R.id.record_name);
TextView record_email = (TextView) convertView.findViewById(R.id.record_email);
// Populate the data into the template view using the data object
record_id.setText(information.id);
record_name.setText(information.name);
record_email.setText(information.email);
return convertView;
}
}