Convertire mese dal db

di il
10 risposte

Convertire mese dal db

Con questa query ottengo i mesi memorizzati nel database. Ovviamente i mesi che ottengo sono numerici, (es.06 per Giugno). Il risultato della query lo visualizzo in uno Spinner, e voglio visualizzare il nome del mese...
dovrei convertire con SimpleDateFormat il mese dal numero al nome. Come faccio?

private List<String> ottienimMesi(){
                List<String> result1 = new LinkedList<String>();
                
                SQLiteDatabase db = new DatabaseHelper(getActivity()).getReadableDatabase();
                
                String sql = "SELECT DISTINCT strftime('%m',"+Table.DATA+") FROM "+Table.TABLE_NAME;
                Cursor c = db.rawQuery(sql, null);
                
                while (c.moveToNext()){
                        result1.add(c.getString(0));
                }
                db.close();
                return result1;
        }

10 Risposte

  • Re: Convertire mese dal db

    Se sviluppi per API >= 9 puoi usare , altrimenti devi ripiegare su String.format(Locale.IT,"%tB",numeroMese);


    Sent from my iPhone using Tapatalk
  • Re: Convertire mese dal db

    Si posso utilizzare
    getDisplayName
    però come visualizzo il risultato della query? ti spiego:
    assegno alla
    private List<String> month;
    il metodo
    month = ottienimMesi();
    e poi lo visualizzo nello spinner
    
    SpinnerAdapter adapter1 = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item, month);
    			monthSelector.setAdapter(adapter1);
    			monthSelector.setSelection(0);
    			monthSelector.setOnItemSelectedListener(new OnItemSelectedListener() {
    
    				@Override
    				public void onItemSelected(AdapterView<?> adapterView, View view,
    					int position, long id) {
    					//faccio qualcosa
    				}
    
    				@Override
    				public void onNothingSelected(AdapterView<?> arg0) {
    				return;
    				}
    				
    			});
    
    
    il problema nasce qui, non sò come convertire il mese per visualizzare il nome.
  • Re: Convertire mese dal db

    O modifichi il metodo ottieniMesi affinché restituisca una lista di nomi piuttosto che di numeri, oppure fai questo passaggio subito prima di creare l'adapter..


    Sent from my iPhone using Tapatalk
  • Re: Convertire mese dal db

    Aspetta, mi sono un attimo perso, come converto la lista month?
    riesci a darmi uno spunto?
  • Re: Convertire mese dal db

    Semplicemente la scorri e sostituisci ogni elemento con il rispettivo "nome del mese", oppure ti crei una nuova lista..


    Sent from my iPhone using Tapatalk
  • Re: Convertire mese dal db

    Altrimenti, per fare una cosa più efficiente puoi effettuare la traduzione subito prima di inserire i valori nella lista..in questo modo invece di creare una lista di "numeri" avrai già una lista di "nomi"


    Sent from my iPhone using Tapatalk
  • Re: Convertire mese dal db

    Ho fatto come dici, sembra funzionare, è giusto?
    
    private List<String> ottienimMesi(){
                    List<String> result1 = new LinkedList<String>();
                    
                    SQLiteDatabase db = new DatabaseHelper(getActivity()).getReadableDatabase();
                    
                    String sql = "SELECT DISTINCT strftime('%m',"+Table.DATA+") FROM "+Table.TABLE_NAME;
                    Cursor c = db.rawQuery(sql, null);
                    
                    while (c.moveToNext()){
    			int monthNumero = (c.getInt(0));
    			
    			Calendar ca = Calendar.getInstance();
    			ca.set(Calendar.MONTH, monthNumero);
    			String monthName = ca.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
    			
    			result1.add(monthName);
    			
    		}
    		db.close();
    		return result1;
    	}
    
  • Re: Convertire mese dal db

    Si, direi che così dovrebbe andare!
  • Re: Convertire mese dal db

    Ora ho un altro problema, con la query strftime ottengo i mesi memorizzati nella tabella.
    il mese numerico lo visualizzo nello Spinner e poi lo passo
    String mese = monthSelector.getSelectedItem().toString();
    ad un metodo per prelevare alcuni dati.

    Ora ovviamente per passare il mese dovrei riconvertire il mese in numero. è un circolo vizioso!
  • Re: Convertire mese dal db

    Ok ho risolto, nel metodo faccio il parse del mese
    
    String mese = monthSelector.getSelectedItem().toString();
    		Calendar cal = Calendar.getInstance();
    		try {
    			cal.setTime(new SimpleDateFormat("MMMM").parse(mese));
    		} catch (ParseException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		int monthInt = cal.get(Calendar.MONTH);
    
Devi accedere o registrarti per scrivere nel forum
10 risposte