Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2015
    Messaggi
    23

    [Android]Confronto Array

    Ciao, ho scaricato una libreria che ho finito di modificare secondo le mie esigenze....
    Ora sono bloccato nel confrontare 2 Array, faccio un esempio:
    Ammettiamo che eventRect abbia 2 records, cioè il dato eventRect.event.getIdOperatore() ==1 e il secondo record èeventRect.event.getIdOperatore() ==3.

    Ora l'array id_nome_opè praticamente identico, quindi contiene un record con il valore 1 e un record con il valore3.

    Con il ciclo for, quando sono uguali voglio fare qualcosa, però con il ciclo for impostato così non ottengo il risultato sperato. Spero di essere stato chiaro:

    codice:
    
    
    codice:
    ArrayList<EventRect> tempEvents = new ArrayList<EventRect>(mEventRects);
            mEventRects = new ArrayList<EventRect>();
    
    for(int j =1; j<=id_nome_op.length;){
                ArrayList<EventRect> eventRects = new ArrayList<EventRect>();
                for (EventRect eventRect : tempEvents) {
                    String compare = String.valueOf(j);
                    if (isStessoOperatore(eventRect.event.getIdOperatore(),compare))
                        eventRects.add(eventRect);
    
         Log.d("compare", "compare "+compare+" idOperatore "+eventRect.event.getIdOperatore());
    
                }
                computePositionOfEvents(eventRects);
                j++;
    


  2. #2
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    posta il codice completo sennò unsicapisceunasega
    comunque, il codice postato non compila neanche sotto minaccia ... la descrizione del problema è sommaria, il case sensitive non rispettato, cicli non chiusi ... manca IsStessoOperatore ... insomma così è impossibile ..
    Ultima modifica di Misterxxx; 11-10-2015 a 22:33
    Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2015
    Messaggi
    23
    Scusa, non ho scritto la prima parte del metodo per non farvi confondere....cmq lo scrivo tutto e ti invito a leggere il primo post per capire il problema:

    codice:
    private void getMoreEvents(Calendar day) {
        // Get more events if the month is changed.
    if (mEventRects == null)
            mEventRects = new ArrayList<EventRect>();
    
        if (mMonthChangeListener == null && !isInEditMode())
            throw new IllegalStateException("You must provide a MonthChangeListener");
    
    // If a refresh was requested then reset some variables.
    if (mRefreshEvents) {
            mEventRects.clear();
    mFetchedMonths = new int[3];
    }
        
        // Get events of previous month.
    int previousMonth = (day.get(Calendar.MONTH) == 0 ? 12 : day.get(Calendar.MONTH));
        int nextMonth = (day.get(Calendar.MONTH) + 2 == 13 ? 1 : day.get(Calendar.MONTH) + 2);
        int[] lastFetchedMonth = mFetchedMonths.clone();
        if (mFetchedMonths[0] < 1 || mFetchedMonths[0] != previousMonth || mRefreshEvents) {
            if (!containsValue(lastFetchedMonth, previousMonth) && !isInEditMode()) {
                List<WeekViewEvent> events = mMonthChangeListener.onMonthChange((previousMonth == 12) ? day.get(Calendar.YEAR) - 1 : day.get(Calendar.YEAR), previousMonth);
    sortEvents(events);
                for (WeekViewEvent event : events) {
                    cacheEvent(event);
    }
            }
            mFetchedMonths[0] = previousMonth;
    }
    
        // Get events of this month.
    if (mFetchedMonths[1] < 1 || mFetchedMonths[1] != day.get(Calendar.MONTH) + 1 || mRefreshEvents) {
            if (!containsValue(lastFetchedMonth, day.get(Calendar.MONTH) + 1) && !isInEditMode()) {
                List<WeekViewEvent> events = mMonthChangeListener.onMonthChange(day.get(Calendar.YEAR), day.get(Calendar.MONTH) + 1);
    sortEvents(events);
                for (WeekViewEvent event : events) {
                    cacheEvent(event);
    }
            }
            mFetchedMonths[1] = day.get(Calendar.MONTH) + 1;
    }
    
        // Get events of next month.
    if (mFetchedMonths[2] < 1 || mFetchedMonths[2] != nextMonth || mRefreshEvents) {
            if (!containsValue(lastFetchedMonth, nextMonth) && !isInEditMode()) {
                List<WeekViewEvent> events = mMonthChangeListener.onMonthChange(nextMonth == 1 ? day.get(Calendar.YEAR) + 1 : day.get(Calendar.YEAR), nextMonth);
    sortEvents(events);
                for (WeekViewEvent event : events) {
                    cacheEvent(event);
    }
            }
            mFetchedMonths[2] = nextMonth;
    }
        
        // Prepare to calculate positions of each events.
    ArrayList<EventRect> tempEvents = new ArrayList<EventRect>(mEventRects);
    mEventRects = new ArrayList<EventRect>();
    
    for (int j = 1; j <= id_nome_op.length;) {
            ArrayList<EventRect> eventRects = new ArrayList<EventRect>();
            for (EventRect eventRect : tempEvents) {
                if(eventRect.event.getIdOperatore() == j)
                    eventRects.add(eventRect);
    
    Log.d("compare", "compare " + j + " idOperatore " + eventRect.event.getIdOperatore());
    }
            computePositionOfEvents(eventRects);
    j++;
    
     }
    }
     
    

  4. #4
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    leggo sullo smartphone ma getIdOperatore è un elemento dell'array?
    se sì, lo confronti con un intero

    update:
    poi nel log leghi un intero a delle stringhe ...
    Ultima modifica di Misterxxx; 12-10-2015 a 17:23
    Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2015
    Messaggi
    23
    si esatto, invece dovrei confrontarlo con id_nome_op, però se faccio così e anche se sono uguali, ottengo indexoutofbounds.
    Come posso risolvere?

  6. #6
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    non so cosa sia id_nome_op ma è una stringa ??
    indexoutofbounds significa che l'indice è uscito dai limiti .. quale editor usi per compilare?
    Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2015
    Messaggi
    23
    no, è un intero che lo passo alla classe in questo modo.
    Nel Fragment ottengo id_nome_op
    codice:
    public void checkOperatori() {
        SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd");
        final String strDate = simpleFormat.format(calendarioFooter.getTime());
    SQLiteDatabase db = new DatabaseHelper(getActivity()).getReadableDatabase();
    String OPERATORI = "SELECT DISTINCT(m.id_operatore), o._id, o.nome, o.cognome FROM Appuntamenti m LEFT JOIN Operatori o ON(m.id_operatore = o._id) WHERE m.data = '" + strDate + "' ORDER BY m.id_operatore ASC";
    Cursor cur = db.rawQuery(OPERATORI, null);
    count = cur.getCount();
    id_nome_op = new int[count];
    nome_op = new String[count];
    cognome_op = new String[count];         
        for (int i = 0; i < count; i++) {
            cur.moveToNext();
    id_nome_op[i] = cur.getInt(0);
    nome_op[i] = cur.getString(2);
    cognome_op[i] = cur.getString(3);
       
    mWeekView.setOperatoriColonne(nome_op, cognome_op);
    mWeekView.setElencoIdOperatori(id_nome_op);
    
    }
        cur.close();
    db.close();
    }
    Lo ricevo dal fragment in questo modo
    codice:
    
    
    codice:
    
    
    public void setElencoIdOperatori(int[] id_nome_op) {
        this.id_nome_op = id_nome_op;
    }
    
    
    
    
    sono in android studio

  8. #8
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    invece con il codice postato che errore ti dà?
    Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2015
    Messaggi
    23
    Faccio il punto della situazione.

    Nella classe che estende una View, ottengo l'elenco degli id in questo modo:
    codice:
    publicvoidsetElencoIdOperatori(int[] id_nome_op){
        this.id_nome_op = id_nome_op;
    }


    Poi con questo metodo devo confrontare id_nome_op con
    eventRect.event.getIdOperatore().
    Quando sono uguali aggiungo l'evento all'array
    eventRects.

    In pratica è il ciclo for che devo modificare.

    codice:
    privatevoidgetMoreEvents(Calendar day){
        // Get more events if the month is changed.
    if(mEventRects ==null)
            mEventRects =newArrayList<EventRect>();
    
    if(mMonthChangeListener ==null&&!isInEditMode())
            thrownewIllegalStateException("You must provide a MonthChangeListener");
    
    // If a refresh was requested then reset some variables.
    if(mRefreshEvents){
            mEventRects.clear();
    mFetchedMonths =newint[3];
    }
        ...
    
        // Get events of this month.
    if(mFetchedMonths[1]<1||mFetchedMonths[1]!= day.get(Calendar.MONTH)+1||mRefreshEvents){
            if(!containsValue(lastFetchedMonth,day.get(Calendar.MONTH)+1)&&!isInEditMode()){
                List<WeekViewEvent> events =mMonthChangeListener.onMonthChange(day.get(Calendar.YEAR),day.get(Calendar.MONTH)+1);
    sortEvents(events);
    for(WeekViewEventevent: events){
                    cacheEvent(event);
    }
            }
            mFetchedMonths[1]= day.get(Calendar.MONTH)+1;
    }
    ...
        
        // Prepare to calculate positions of each events.
    ArrayList<EventRect> tempEvents =newArrayList<EventRect>(mEventRects);
    mEventRects =newArrayList<EventRect>();
    
    for(intj =1;j <=id_nome_op.length;){
            ArrayList<EventRect> eventRects =newArrayList<EventRect>();
    for(EventRect eventRect : tempEvents){
                if(eventRect.event.getIdOperatore()== j)
                    eventRects.add(eventRect);
    
    Log.d("compare","compare "+ j +" idOperatore "+ eventRect.event.getIdOperatore());
    }
            computePositionOfEvents(eventRects);
    j++;
    
     }
    }

  10. #10
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,706
    e che errore leggi con questo codice?
    Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.