Sascha N.
- Forum-Beiträge: 60
19.12.2011, 02:13:52 via Website
19.12.2011 02:13:52 via Website
hallo zusammen.
Ich bin Neu in der Android Entwicklung. Komme auch ganz gut vorran.
Ich habe eine situation die ich nicht verstehe ich muss einen Aufruf aus dem Internet 2 mal wiederholen bevor die ListView aktualisiert wird. Geschweige denn die XML datei aus dem Internet heruntergeladen wird. Nun ist es ja nicht im sinne des Erfinders unnötig die Internet-Leitung zu belasten.
hier mal der Code meiner ListViewActivity
wie man sieht habe ich auch einen Adaper der die daten aus dem Internet herunterholt. Das habe ich mit SAX aus einem Howto übernommen. Ich muss dazusagen das ich bisher immer nur PHP und Pascal programmiert habe und der umstieg auf Java mir etwas schwer fällt. daher noch meine classe die die daten aus dem internet holt :
Was da Passiert ist mir ja so weit Klar. Aber warum das mit dem "refreshEvents" 2 mal aufrufen muss ist mir ein Rätsel.
Ich hoffe einer von euch kann mir das evtl erklären.
Gruss Sascha
Ich bin Neu in der Android Entwicklung. Komme auch ganz gut vorran.
Ich habe eine situation die ich nicht verstehe ich muss einen Aufruf aus dem Internet 2 mal wiederholen bevor die ListView aktualisiert wird. Geschweige denn die XML datei aus dem Internet heruntergeladen wird. Nun ist es ja nicht im sinne des Erfinders unnötig die Internet-Leitung zu belasten.
hier mal der Code meiner ListViewActivity
1package de.mercedesfreunde.main;
2
3import de.mercedesfreunde.main.R;
4import android.app.Activity;
5import android.os.Bundle;
6import android.view.Menu;
7import android.view.MenuInflater;
8import android.view.MenuItem;
9import android.view.View;
10import android.view.Window;
11import android.widget.ListAdapter;
12import android.widget.ListView;
13import android.widget.TextView;
14
15
16public class EventListActivity extends Activity {
17 static int YearSelect = 2011;
18 static int MonthSelect = 11;
19 static String[] monthsArray = null;
20 @Override
21 public void onCreate(Bundle savedInstanceState) {
22 super.onCreate(savedInstanceState);
23 requestWindowFeature(Window.FEATURE_NO_TITLE);
24 monthsArray = getResources().getStringArray(R.array.months);
25 setContentView(R.layout.eventlist);
26 refreshEvents();
27 refreshEvents();
28 }
29
30 public void refreshEvents() {
31 TextView tTitel = (TextView) this.findViewById(R.id.tMonat);
32 tTitel.setText(monthsArray[MonthSelect]+" "+Integer.toString(YearSelect) );
33 Events eventList = new Events();
34 ListAdapter listenAdapter = new EventItemAdapter(this, eventList.getEvents());
35 ListView meineListView = (ListView) findViewById(R.id.list);
36 meineListView.setAdapter(listenAdapter);
37 }
38
39 @Override
40 public boolean onCreateOptionsMenu(Menu menu) {
41 MenuInflater inflater = getMenuInflater();
42 inflater.inflate(R.menu.events_menu, menu);
43 return true;
44 }
45
46 public void onClick(View v) {
47 switch (v.getId()) {
48 case R.id.tNext :
49 if (MonthSelect == 12) {
50 MonthSelect= 1;
51 YearSelect++;
52
53 } else MonthSelect++;
54 refreshEvents();
55 refreshEvents();
56 break;
57 case R.id.tPrev :
58 if (MonthSelect == 1) {
59 MonthSelect= 12;
60 YearSelect--;
61 } else MonthSelect--;
62 refreshEvents();
63 refreshEvents();
64 break;
65 }
66 }
67 public boolean onOptionsItemSelected (MenuItem item){
68 switch (item.getItemId()){
69
70 case R.id.refresh_list :
71 refreshEvents();
72 refreshEvents();
73 return true;
74
75 }
76
77 return false;
78 }
79}
2
3import de.mercedesfreunde.main.R;
4import android.app.Activity;
5import android.os.Bundle;
6import android.view.Menu;
7import android.view.MenuInflater;
8import android.view.MenuItem;
9import android.view.View;
10import android.view.Window;
11import android.widget.ListAdapter;
12import android.widget.ListView;
13import android.widget.TextView;
14
15
16public class EventListActivity extends Activity {
17 static int YearSelect = 2011;
18 static int MonthSelect = 11;
19 static String[] monthsArray = null;
20 @Override
21 public void onCreate(Bundle savedInstanceState) {
22 super.onCreate(savedInstanceState);
23 requestWindowFeature(Window.FEATURE_NO_TITLE);
24 monthsArray = getResources().getStringArray(R.array.months);
25 setContentView(R.layout.eventlist);
26 refreshEvents();
27 refreshEvents();
28 }
29
30 public void refreshEvents() {
31 TextView tTitel = (TextView) this.findViewById(R.id.tMonat);
32 tTitel.setText(monthsArray[MonthSelect]+" "+Integer.toString(YearSelect) );
33 Events eventList = new Events();
34 ListAdapter listenAdapter = new EventItemAdapter(this, eventList.getEvents());
35 ListView meineListView = (ListView) findViewById(R.id.list);
36 meineListView.setAdapter(listenAdapter);
37 }
38
39 @Override
40 public boolean onCreateOptionsMenu(Menu menu) {
41 MenuInflater inflater = getMenuInflater();
42 inflater.inflate(R.menu.events_menu, menu);
43 return true;
44 }
45
46 public void onClick(View v) {
47 switch (v.getId()) {
48 case R.id.tNext :
49 if (MonthSelect == 12) {
50 MonthSelect= 1;
51 YearSelect++;
52
53 } else MonthSelect++;
54 refreshEvents();
55 refreshEvents();
56 break;
57 case R.id.tPrev :
58 if (MonthSelect == 1) {
59 MonthSelect= 12;
60 YearSelect--;
61 } else MonthSelect--;
62 refreshEvents();
63 refreshEvents();
64 break;
65 }
66 }
67 public boolean onOptionsItemSelected (MenuItem item){
68 switch (item.getItemId()){
69
70 case R.id.refresh_list :
71 refreshEvents();
72 refreshEvents();
73 return true;
74
75 }
76
77 return false;
78 }
79}
wie man sieht habe ich auch einen Adaper der die daten aus dem Internet herunterholt. Das habe ich mit SAX aus einem Howto übernommen. Ich muss dazusagen das ich bisher immer nur PHP und Pascal programmiert habe und der umstieg auf Java mir etwas schwer fällt. daher noch meine classe die die daten aus dem internet holt :
1public class Events {
2 ArrayList<Event> eventList = new ArrayList<Event>();
3
4 public Events() {
5 try {
6
7 /** Handling XML */
8 SAXParserFactory spf = SAXParserFactory.newInstance();
9 SAXParser sp = spf.newSAXParser();
10 XMLReader xr = sp.getXMLReader();
11
12 /** Send URL to parse XML Tags */
13 URL sourceUrl = new URL(
14 "http://www.the-microborgs.de/kalender/export_index.php?where=1&"+XMLHandler.SQLQuery);
15
16 /** Create handler to handle XML Tags ( extends XMLHandler ) */
17 XMLHandler myXMLHandler = new XMLHandler();
18 xr.setContentHandler(myXMLHandler);
19 xr.parse(new InputSource(sourceUrl.openStream()));
20
21 } catch (Exception e) {
22 System.out.println("XML Pasing Excpetion = " + e);
23 }
24
25 }
26
27 public ArrayList<Event> getEvents() {
28 XMLHandler.SQLQuery = "month="+Integer.toString(EventListActivity.MonthSelect)+"&year="+Integer.toString(EventListActivity.YearSelect);
29 eventList = XMLHandler.eventList;
30 return eventList;
31 }
32}
2 ArrayList<Event> eventList = new ArrayList<Event>();
3
4 public Events() {
5 try {
6
7 /** Handling XML */
8 SAXParserFactory spf = SAXParserFactory.newInstance();
9 SAXParser sp = spf.newSAXParser();
10 XMLReader xr = sp.getXMLReader();
11
12 /** Send URL to parse XML Tags */
13 URL sourceUrl = new URL(
14 "http://www.the-microborgs.de/kalender/export_index.php?where=1&"+XMLHandler.SQLQuery);
15
16 /** Create handler to handle XML Tags ( extends XMLHandler ) */
17 XMLHandler myXMLHandler = new XMLHandler();
18 xr.setContentHandler(myXMLHandler);
19 xr.parse(new InputSource(sourceUrl.openStream()));
20
21 } catch (Exception e) {
22 System.out.println("XML Pasing Excpetion = " + e);
23 }
24
25 }
26
27 public ArrayList<Event> getEvents() {
28 XMLHandler.SQLQuery = "month="+Integer.toString(EventListActivity.MonthSelect)+"&year="+Integer.toString(EventListActivity.YearSelect);
29 eventList = XMLHandler.eventList;
30 return eventList;
31 }
32}
Was da Passiert ist mir ja so weit Klar. Aber warum das mit dem "refreshEvents" 2 mal aufrufen muss ist mir ein Rätsel.
Ich hoffe einer von euch kann mir das evtl erklären.
Gruss Sascha
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.