my code is this :
package be.pressd.arrangementen;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONObject;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener{
Button fetch;
EditText et;
String aantalPersonen;
ArrayList<ArrangementInfo> arrangementenArray = new ArrayList<ArrangementInfo>();
ArrangementInfo arrangement;
private ListView lv;
private ArrayAdapter<String> listAdapter ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fetch = (Button) findViewById(R.id.fetchButton);
et = (EditText) findViewById(R.id.aantalPersonen);
// Find the ListView resource.
lv = (ListView) findViewById(R.id.arrangementenLijst);
listAdapter = new ArrayAdapter<String>(this, R.layout.line_row);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String arrangement = (String) lv.getItemAtPosition(position);
Intent i = new Intent(getApplicationContext(), ArrangementItem.class);
i.putExtra("arrangement", arrangement);
i.putExtra("minpers", arrangementenArray.get(position).getMinpers());
i.putExtra("maxpers", arrangementenArray.get(position).getMaxpers());
i.putExtra("prijs", arrangementenArray.get(position).getPrijs());
i.putExtra("perpersoon", arrangementenArray.get(position).getPerPersoon());
i.putExtra("uitleg", arrangementenArray.get(position).getUitleg());
i.putExtra("extras", arrangementenArray.get(position).getExtras());
startActivity(i);
}
});
fetch.setOnClickListener(this);
}
public class ArrangementInfo{
String naam, minpers, maxpers, prijs, perPersoon, uitleg, extras; //Create variables of your requirement.
public String getNaam() {
return naam;
}
public void setNaam(String naam) {
this.naam = naam;
}
public String getMinpers() {
return minpers;
}
public void setMinpers(String minpers) {
this.minpers = minpers;
}
public String getMaxpers() {
return maxpers;
}
public void setMaxpers(String maxpers) {
this.maxpers = maxpers;
}
public String getPrijs() {
return prijs;
}
public void setPrijs(String prijs) {
this.prijs = prijs;
}
public String getPerPersoon() {
return perPersoon;
}
public void setPerPersoon(String perPersoon) {
this.perPersoon = perPersoon;
}
public String getUitleg() {
return uitleg;
}
public void setUitleg(String uitleg) {
this.uitleg = uitleg;
}
public String getExtras() {
return extras;
}
public void setExtras(String extras) {
this.extras = extras;
}
}
class task extends AsyncTask<String, String, Void>
{
private ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
InputStream is = null ;
String result = "";
protected void onPreExecute() {
progressDialog.setMessage("Gegevens ophalen...");
progressDialog.show();
progressDialog.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface arg0) {
task.this.cancel(true);
}
});
}
@Override
protected Void doInBackground(String... params) {
String url_select = "http://mywebsite/myphpfile.php?aantpers=" + aantalPersonen;
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url_select);
ArrayList<NameValuePair> param = new ArrayList<NameValuePair>();
try
{
httpPost.setEntity(new UrlEncodedFormEntity(param));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
//read content
is = httpEntity.getContent();
} catch (Exception e) {
Log.e("log_tag", "Error in http connection "+e.toString());
}
try {
BufferedReader br = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = "";
while((line=br.readLine())!=null)
{
sb.append(line+"\n");
}
is.close();
result=sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error converting result "+e.toString());
}
return null;
}
protected void onPostExecute(Void v) {
try
{ listAdapter.clear();
JSONArray Jarray = new JSONArray(result);
arrangementenArray.clear();
for(int i=0; i < Jarray.length(); i++)
{
JSONObject arrangementObject = null;
arrangementObject = Jarray.getJSONObject(i);
arrangement = new ArrangementInfo();
arrangement.naam = arrangementObject.getString("naam");
arrangement.minpers = arrangementObject.getString("minpers");
arrangement.maxpers = arrangementObject.getString("maxpers");
arrangement.prijs = arrangementObject.getString("prijs");
arrangement.perPersoon = arrangementObject.getString("perpersoon");
arrangement.uitleg = arrangementObject.getString("uitleg");
arrangement.extras = arrangementObject.getString("extras");
arrangementenArray.add(arrangement);
listAdapter.add(arrangementObject.getString("naam"));
}
this.progressDialog.dismiss();
lv.setAdapter( listAdapter);
} catch (Exception e) {
Log.e("log_tag", "Error parsing data "+e.toString());
}
}
}
@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.fetchButton :
aantalPersonen = et.getText().toString();
if (aantalPersonen.trim().equals("")) {
Toast.makeText(this, "Gelieve het aantal personen in te geven", Toast.LENGTH_SHORT).show();
return;
}
else
{
new task().execute();
break;
}
}
}
}
I must be honest in that I found the code for the ASyncTask and so on the Internet. I noticed that if there's no network (wifi or 4G) available, the "fetching" part keeps on running running running.
I don't know how to cancel the task if no network was found and then also show it to the user.
Who can help ?
Greetings and thanks in advance,
Davy