package com.example.attendance;
import java.util.ArrayList;
import java.util.Calendar;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
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.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class StudentListActivity extends Activity {
MyCustomAdapter dataAdapter = null;
JSONObject jsonobject;
JSONArray jsonarray;
ArrayList<String> studentlist;
ArrayList<Student> student;
String route_id;
String school_id;
String trip;
String travel_mode;
String name;
String id;
String returnval;
String status;
int total;
int present;
int absent;
Calendar c = Calendar.getInstance();
int day = c.get(Calendar.DATE);
int month = c.get(Calendar.MONTH);
int year = c.get(Calendar.YEAR);
String todate = day + "/" + (month + 1) + "/" + year;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_student_list);
SharedPreferences editor = getSharedPreferences("school", MODE_PRIVATE);
route_id = editor.getString("routeid", "");
school_id = editor.getString("schoolid", "");
trip = editor.getString("trip", "");
travel_mode = editor.getString("travelmode", "");
//Generate list View from ArrayList
//displayListView();
new DownloadJSON().execute();
checkButtonClick();
}
//Download JSON file AsyncTask
private class DownloadJSON extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
// Locate the WorldPopulation Class
student = new ArrayList<Student>();
// Create an array to populate the spinner
studentlist = new ArrayList<String>();
// JSON file URL address
if (travel_mode == "pickup") {
jsonobject = JSONFunctions
.getJSONfromURL("http://attendance- samsidh.rhcloud.com/getstudentsforattendancepickup?tripid=" + trip + "&schol=" + school_id + "&routeid=" + route_id);
} else {
jsonobject = JSONFunctions
.getJSONfromURL("http://attendance-samsidh.rhcloud.com/getstudentsforattendancedrop?tripid=" + trip + "&schol=" + school_id + "&routeid=" + route_id);
}
try {
// Locate the NodeList name
jsonarray = jsonobject.getJSONArray("returnval");
//System.out.println(jsonarray);
for (int i = 0; i < jsonarray.length(); i++) {
jsonobject = jsonarray.getJSONObject(i);
Student s = new Student();
s.setStudentid(jsonobject.optString("student_id"));
s.setStudentname(jsonobject.optString("name"));
//s.setSelected(jsonobject.optBoolean(name, fallback)("flag"));
student.add(s);
// Populate spinner with country names
// studentlist.add(jsonobject.optString("name"));
}
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void args) {
displayListView();
}
}
private void displayListView() {
//create an ArrayAdaptar from the String Array
dataAdapter = new MyCustomAdapter(this, R.layout.student_info_list, student);
ListView listView = (ListView) findViewById(R.id.listView1);
// Assign adapter to ListView
listView.setAdapter(dataAdapter);
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Student student = (Student) parent.getItemAtPosition(position);
Toast.makeText(getApplicationContext(), "Clicked on Row: " + student.getStudentname(),
Toast.LENGTH_LONG).show();
}
});
}
private class MyCustomAdapter extends ArrayAdapter<Student> {
private ArrayList<Student> studentList;
public MyCustomAdapter(Context context, int textViewResourceId,
ArrayList<Student> studentList) {
super(context, textViewResourceId, studentList);
this.studentList = new ArrayList<Student>();
this.studentList.addAll(studentList);
}
private class ViewHolder {
TextView code;
CheckBox name;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
// Log.v("ConvertView", String.valueOf(position));
if (convertView == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.student_info_list, null);
holder = new ViewHolder();
holder.code = (TextView) convertView.findViewById(R.id.code);
holder.name = (CheckBox) convertView.findViewById(R.id.checkBox1);
convertView.setTag(holder);
holder.name.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
CheckBox cb = (CheckBox) v;
Student student = (Student) cb.getTag();
Toast.makeText(getApplicationContext(), "Clicked on Checkbox: " + cb.getText() + " is " + cb.isChecked(), Toast.LENGTH_LONG).show();
student.setSelected(cb.isChecked());
}
});
} else {
holder = (ViewHolder) convertView.getTag();
}
Student student = studentList.get(position);
holder.code.setText(" (" + student.getStudentid() + ")");
holder.name.setText(student.getStudentname());
holder.name.setChecked(student.isSelected());
holder.name.setTag(student);
return convertView;
}
}
private void checkButtonClick() {
Button myButton = (Button) findViewById(R.id.findSelected);
myButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
total = 0;
present = 0;
absent = 0;
StringBuffer responseText = new StringBuffer();
responseText.append("The following were selected...\n");
ArrayList<Student> studentList = dataAdapter.studentList;
for (int i = 0; i < studentList.size(); i++) {
total = total + 1;
Student student = studentList.get(i);
if (student.isSelected()) {
present = present + 1;
status = String.valueOf(1);
//responseText.append("\n" + student.getStudentname());
/* name=student.getStudentname();
id=student.getStudentid();
jsonobject = JSONFunctions
.getJSONfromURL("http://attendance-samsidh.rhcloud.com/attsubmiturl?schol=SCH001&studentid="+ id +"&student_name="+ name +"&routeid="+ route_id +"&pickupordrop="+ travel_mode +"&trip="+ trip +"&date="+ todate +"&status=1");*/
//responseText.append("\n" + student.getStudentname());
name = student.getStudentname();
// name="praba";
id = student.getStudentid();
new ExecuteTask().execute(id, name);
// jsonobject = JSONFunctions.getJSONfromURL("http://attendance-samsidh.rhcloud.com/attsubmiturl?schol="+school_id+"&studentid="+ id +"&student_name="+ name +"&routeid="+ route_id +"&pickupordrop="+ travel_mode +"&trip="+ trip +"&date="+ todate +"&status="+ status +"");
// jsonobject = JSONFunctions.getJSONfromURL("http://attendance-samsidh.rhcloud.com/attsubmiturl?schol=SCH001&studentid=ENR11125&student_name=ram&routeid=ROUTE-01&pickupordrop=pickup&trip=1&date=25/07/2016&status=1");
} else {
absent = absent + 1;
status = String.valueOf(0);
name = student.getStudentname();
id = student.getStudentid();
// jsonobject = JSONFunctions.getJSONfromURL("http://attendance-samsidh.rhcloud.com/attsubmiturl?schol="+school_id+"&studentid="+ id +"&student_name="+ name +"&routeid="+ route_id +"&pickupordrop="+ travel_mode +"&trip="+ trip +"&date="+ todate +"&status="+ status +"");
//jsonobject = JSONFunctions.getJSONfromURL("http://attendance-samsidh.rhcloud.com/attsubmiturl?schol=SCH001&studentid="+ id +"&student_name="+ name +"&routeid="+ route_id +"&pickupordrop="+ travel_mode +"&trip="+ trip +"&date="+ todate +"&status=0");
}
}
/*Bundle b=new Bundle();
b.putInt("Total",total); //create a key and store data in bundle
b.putInt("Present",present);
b.putInt("Absent",absent);
Toast.makeText(getApplicationContext(),"Absent: " + absent +" present :" + present, Toast.LENGTH_LONG).show();
Intent i=new Intent(StudentListActivity.this,AttendanceDetail.class);
i.putExtras(b);
startActivity(i);
*/
}
});
}
class ExecuteTask extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... params) {
String res = PostData(params);
//jsonobject = JSONFunctions.getJSONfromURL("http://attendance-samsidh.rhcloud.com/attsubmiturl?schol=SCH001&studentid=ENR11125&student_name=ram&routeid=ROUTE-01&pickupordrop=pickup&trip=1&date=25/07/2016&status=1");
jsonobject = JSONFunctions.getJSONfromURL("http://attendance-samsidh.rhcloud.com/attsubmiturl?schol=" + school_id + "&studentid=" + id + "&student_name=" + name + "&routeid=" + route_id + "&pickupordrop=" + travel_mode + "&trip=" + trip + "&date=" + todate + "&status=1");
try {
returnval = jsonobject.getString("returnval");
jsonarray = jsonobject.getJSONArray("returnval");
returnval = jsonarray.get(0).toString();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Toast.makeText(getApplicationContext(), returnval, 3000).show();
return returnval;
}
private String PostData(String[] params) {
// TODO Auto-generated method stub
return null;
}
@Override
protected void onPostExecute(String result) {
// progressBar.setVisibility(View.GONE);
//progess_msz.setVisibility(View.GONE);
Toast.makeText(getApplicationContext(), result, 3000).show();
}
}
}
the above code is to call the AsyncTask or ExecuteTask funtion if the checkbox is selected from the list to perform the web service in host.
The static value binding to the query or web service is working properly, but when binding the value with variables I'm getting these errors.
java.lang.IllegalArgumentException,
java.lang.NullPointerException,
org.json.JSONException
Kindly give me a suggestion or idea to solve the issue
it seems your JSON does'nt have the key you're trying to get. if you could Kindy Post your JSON which you're trying to parse in order to C..