Verbinding met internet
Als eerste gaan we zorgen dat we überhaupt toegang tot het internet krijgen. Open AndroidManifest.xml en ga naar de tab Permissions. Klik op Add, selecteer Uses Permissions en klik op OK. Zoek in de lijst aan de rechterkant naar android.permission.INTERNET en sla het bestand op. Je hebt nu toegang tot het internet!
Nu gaan we zorgen dat je zelf niet al het moeilijke werk hoeft te doen om webpagina's op te halen. Ga naar http://loopj.com/android-async-http/ en klik op Download. Sla het bestand dat je download op in de libs map van je Android project. Ga nu weer naar Eclipse en rechtsklik op je libs-map en klik op Refresh.
Nu gaan we de method reloadList() implementeren. Als eerste maken we de HTTP Client aan en zorgen we voor een request (alles komt uit de library):
2
3
4
5
6
7
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://www.koenv.nl/phphulp/android/index.php",
new JsonHttpResponseHandler() {
});
}
Je kan mijn server gebruiken of vervang http://www.koenv.nl/phphulp/android/index.php door je eigen URL. Hetgene wat deze method tot nu toe doet is een HTTP Client aanmaken, en dan een GET request sturen naar http://www.koenv.nl/phphulp/android/index.php. De response zal hier worden afgehandeld door de JsonHttpResponseHandler. De afhandeling gaan we nu maken. Als eerste gaan we zorgen dat de gebruiker een melding krijgt als er een fout is:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://www.koenv.nl/phphulp/android/index.php",
new JsonHttpResponseHandler() {
@Override
public void onFailure(Throwable e, JSONObject response) {
try {
Toast.makeText(
MainActivity.this,
"Er is een fout opgetreden: "
+ response.getString("error"),
Toast.LENGTH_LONG).show();
} catch (JSONException e1) {
Toast.makeText(MainActivity.this,
"Er is een onbekende fout opgetreden",
Toast.LENGTH_LONG).show();
}
}
@Override
public void onFailure(Throwable e, String response) {
Toast.makeText(MainActivity.this,
"Er is een onbekende fout opgetreden",
Toast.LENGTH_LONG).show();
}
});
}
Nu krijgt de gebruiker een 'Toast' met één van de messages die wij hebben geprogrammeerd. Er staan iets uitgebreidere methods in de GitHub repository zodat je beter kan debuggen als er iets fout gaat.
We gaan als laatste zorgen dat we een mooie lijst krijgen als het wel goed gaat :):
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://www.koenv.nl/phphulp/android/index.php",
new JsonHttpResponseHandler() {
@Override
public void onSuccess(JSONArray response) {
try {
// Leeg eerst alle articles
articles.clear();
for (int i = 0; i < response.length(); i++) {
// Nu willen we het JSON Object op de plaats i
JSONObject object = response.getJSONObject(i);
// Daarin zoeken we alle waarden op nodig voor
// ons Article object
int id = object.getInt("id");
String title = object.getString("title");
String content = object.getString("content");
String slug = object.getString("slug");
// Dan maken we ons Article object
Article article = new Article(id, title,
content, slug);
// En voegen we deze toe aan onze lijst
articles.add(article);
}
} catch (JSONException e) {
Toast.makeText(MainActivity.this,
"Er is een onbekende fout opgetreden",
Toast.LENGTH_LONG).show();
// Hiermee kan jij de errors zien in de view DDMS
// (rechtsboven klik je op DDMS in Eclipse)
Log.e("PHPHulp", response.toString(), e);
} finally {
// En hier zeggen we dat er iets is veranderd aan
// onze lijst en dat deze dus gerefresh moet worden
adapter.notifyDataSetChanged();
}
}
// hier de onFailure()
});
}
Ik neem aan dat je ondertussen wel weet dat je altijd Ctrl+Shift+O moet proberen als er rode lijntjes ergens onder staan. Gaat het hiermee niet weg, ga dan over het rode lijntje en probeer of je de fout begrijpt. Zo niet, zoek het op op internet of vraag het in de reacties.
Inhoudsopgave
- Het serverside gedeelte
- Installatie Android SDK
- Een eerste start
- De layout
- Zorgen voor een lijstvuller
- De lijst vullen
- Verbinding met internet
- Dat was het