Rückgabe Kalenderwoche bitte um Hilfe

  • 7 Antworten
  • Letztes Antwortdatum
H

Heribert500

Ambitioniertes Mitglied
1
Hallo schon wieder,
aus einer DB hole ich 365 Tage(Datümer) die ich dann in einem Listview anzeige.
Soweit alles ok.

mit unten stehendem Code(ausschnitt) versuche ich die Kalenderwoche zu ermitteln
Die Funktion gibt mir aber nur eine einzige KW und zwar immer dieselbe ( bei mir für 2015 = 53. KW) zurück
Hat einer ne Idee warum das nicht klappt

Code:
 public void Set_Refresh_Data() {
        kalenderarray.clear();
        db = new DBHelper(this);
        ArrayList<Kalender> kalender_array_from_db = db.Get_Kalender();
         for (int i = 0; i < kalender_array_from_db.size(); i++) {
            int idnr = kalender_array_from_db.get(i).getID();
            String rdatum = kalender_array_from_db.get(i).getrDatum();
            try{
                 Date date = new SimpleDateFormat("EEE dd.MM.yyyy", Locale.GERMAN).parse(rdatum);
                 Calendar c = Calendar.getInstance();
                 c.setTime(date);
                 dow = c.get(Calendar.DAY_OF_WEEK);
                 kow = c.get(Calendar.WEEK_OF_YEAR);
                }
                catch (Exception e) {
                    Log.e("KW", "exception", e);
                }

Danke schon mal
heribert500
 
ist das die Methode vollständig, ich meine außer der offensichtlich fehlenden zwei "}"?
Falls ja:
du weißt dow und kow je schleifen durchlauf einen Wert zu und der zweite durchlauf überschreibt den ersten, der dritte den des zweiten und so weiter. Deshalb hast du am Ende nur das Ergebnis des letzten Durchlaufs in dow und kow stehen.
Falls nein:
poste bitte die Ganze Methode, damit wir sehen können was mit dow und kow gemacht wird.
 
Hi, kosmus
hier der kompleete Code
wo gehören denn die 2} hin

Danke

Code:
 public void Set_Refresh_Data() {
        kalenderarray.clear();
        db = new DBHelper(this);
        ArrayList<Kalender> kalender_array_from_db = db.Get_Kalender();
         for (int i = 0; i < kalender_array_from_db.size(); i++) {
             int idnr = kalender_array_from_db.get(i).getID();
             String rdatum = kalender_array_from_db.get(i).getrDatum();
             try {
                 Date date = new SimpleDateFormat("EEE dd.MM.yyyy", Locale.GERMAN).parse(rdatum);
                 Calendar c = Calendar.getInstance();
                 c.setTime(date);
                 myear = c.get(Calendar.YEAR);
                 dow = c.get(Calendar.DAY_OF_WEEK);
                 kow = c.get(Calendar.WEEK_OF_YEAR);
             } catch (Exception e) {
                 Log.e("KW", "exception", e);
             }

            String rfrei1 = kalender_array_from_db.get(i).getrFrei1();
            String rfrei2 = kalender_array_from_db.get(i).getrFrei2();
            String rfrei3 = kalender_array_from_db.get(i).getrFrei3();           
            Kalender cnt = new Kalender();
            cnt.setID(idnr);
            cnt.setrDatum(rdatum);         
            cnt.setrFrei1(rfrei1);
            cnt.setrFrei2(rfrei2);
            cnt.setrFrei3(rfrei3);           
            kalenderarray.add(cnt);
        }
        db.close();
        rsAdapter = new Kalender_Adapter(KalenderDB.this, R.layout.listview_row,
                kalenderarray);
        Kalender_listview.setAdapter(rsAdapter);
        rsAdapter.notifyDataSetChanged();
    }
 
ja es ist genau wie ich vermutet habe, die Variablen myear, dow und kow (wieso heißt die eigentlich so?) werden in der Schleife immer wieder überschrieben.
Es ist jetzt schwer zu sagen wie du das ändern kannst, weil es von deiner geplanten Weiterverarbeitung abhängt.
Aber wenn ich es richtig sehe hast du da eine liste kalenderarray in der du das Datum speicherst.
Code:
cnt.setrDatum(rdatum);
kalenderarray.add(cnt);
entweder du könntest deine Klasse Kalender so erweitern, dass sie zusätzlich noch zwei Integer hält, in denen du dann die Werte von kow und dow speicherst. Aber im Prinzip kannst du die Ermittlung von dow, kow und myear ganz aus der Schleife werfen und später bei der Auswertung über das rdatum ermitteln.
 
  • Danke
Reaktionen: Heribert500
Hi, kosmus
hier der kompleete Code
wo gehören denn die 2} hin

Danke

Code:
 public void Set_Refresh_Data() {
        kalenderarray.clear();
        db = new DBHelper(this);
        ArrayList<Kalender> kalender_array_from_db = db.Get_Kalender();
         for (int i = 0; i < kalender_array_from_db.size(); i++) {
             int idnr = kalender_array_from_db.get(i).getID();
             String rdatum = kalender_array_from_db.get(i).getrDatum();
             try {
                 Date date = new SimpleDateFormat("EEE dd.MM.yyyy", Locale.GERMAN).parse(rdatum);
                 Calendar c = Calendar.getInstance();
                 c.setTime(date);
                 myear = c.get(Calendar.YEAR);
                 dow = c.get(Calendar.DAY_OF_WEEK);
                 kow = c.get(Calendar.WEEK_OF_YEAR);
             } catch (Exception e) {
                 Log.e("KW", "exception", e);
             }

            String rfrei1 = kalender_array_from_db.get(i).getrFrei1();
            String rfrei2 = kalender_array_from_db.get(i).getrFrei2();
            String rfrei3 = kalender_array_from_db.get(i).getrFrei3();          
            Kalender cnt = new Kalender();
            cnt.setID(idnr);
            cnt.setrDatum(rdatum);        
            cnt.setrFrei1(rfrei1);
            cnt.setrFrei2(rfrei2);
            cnt.setrFrei3(rfrei3);          
            kalenderarray.add(cnt);
        }
        db.close();
        rsAdapter = new Kalender_Adapter(KalenderDB.this, R.layout.listview_row,
                kalenderarray);
        Kalender_listview.setAdapter(rsAdapter);
        rsAdapter.notifyDataSetChanged();
    }
[doublepost=1448316673,1448316150][/doublepost]Danke dir,
ja die variablen sollen über die Liste in einem listview ausgegeben werden.
Wie auch das jeweilige Datum und frei1......
Die Auswertung von dow und kow hatte ich schon in der Liste versucht, hatte auch nicht das Ergebnis geliefert. Ich probiert das nochmal und melde mich bei Problemen
dow = day of Werk
kow = hmmmmm? eigentlich Ableitung der KW,
 
OK ich hätte es kW oder woy genannt. Im Prinzip musst du dann den folgenden teil im Adapter unterbringen:
Code:
Date date = new SimpleDateFormat("EEE dd.MM.yyyy", Locale.GERMAN).parse(rdatum);
Calendar c = Calendar.getInstance();
                 c.setTime(date);
myear = c.get(Calendar.YEAR);
dow = c.get(Calendar.DAY_OF_WEEK);
kow = c.get(Calendar.WEEK_OF_YEAR);
Wobei du aus kow und dow zu lokalen variablen machen solltest. rdatum kannst du ja aus dem Kalender Objekt auch im Adapter auslesen
 
Hallo
Bin auch gleich wieder weg ^^

day statt dow!?
week statt kow!?
year statt myear!?

"_" am Besten vermeiden ->calenderArrayFromDB statt kalender_array_from_db! Außer es sind "static final" variablen/member

Bis dann :)
 
Danke für die Tipps, kosmus und Jaiel
heribert500
 
Zurück
Oben Unten