Visualizzazione dei risultati da 1 a 7 su 7

Discussione: problema con Spinner

  1. #1

    problema con Spinner

    Salve, ho un problema con l'implementazione del codice che ho trovato in questo tutorial http://www.html.it/pag/49010/spinner-menu-a-tendina/

    nel seguente codice:
    codice:
    // assegnazione del layout all'Activity
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    
    // preparazione della ListView per l'elenco delle città
    ListView lv=(ListView) findViewById(R.id.cities);
    listviewAdapter= new ArrayAdapter<>(this, R.layout.row);
    lv.setAdapter(listviewAdapter);
    
    // preparazione dello Spinner per mostrare l'elenco dei Paesi
    ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<>(this, R.layout.row);
    spinnerAdapter.addAll(countries.getCountries());
    Spinner sp=(Spinner) findViewById(R.id.countries);
    sp.setAdapter(spinnerAdapter);
    sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
    
    mi segna in rosso setContentView e findViewById
    e mi sottolinea in rosso
    this, R.layout.row

    Lo utilizzo per una app android
    come posso risolverlo Grazie

  2. #2
    nessun suggerimento?

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Me ne intendo poco/nulla di Android, ma dall'articolo mi pare di dedurre che quel R.layout.row è riferito a quel file res/layout/row.xml che viene mostrato poco prima del codice della activity. Di più non saprei ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    setContentView e findViewById sono metodi appartenenti alle Activity. Se tu stai implementando, ad esempio, un Fragment o, comunque, una classe che non deriva da Activity, semplicemente quei metodi non ce li hai.

    Se stai implementando un Fragment, allora setContentView non lo si dovrebbe usare e per poter invocare findViewById dovrai prima ottenere la View usando il LayoutInflater:

    codice:
    View myView = inflater.inflate(R.layout.activity_main2, container, false);
    ListView lv = (ListView) myView.findViewById(R.id.cities);

    Ciao.
    Ultima modifica di LeleFT; 20-06-2016 a 10:59
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Vi posto un esempio.


    Ho il primo Spinner con un elenco di Stati:


    file states.xml
    <resources>
    <string-array name="states">
    <item>Selecetd States*</item>
    <item>Fancia</item>
    <item>Germania</item>
    <item>Spagna</item>
    </string-array>
    </resources>




    Cliccando su uno stato si visualizzeranno nel secondo Spinner l'elenco delle Città di quello stato:


    file city.xml
    <resources>
    <string-array name="states1">
    <item>Selecetd City*</item>
    <item>Paris</item>
    <item>Nantes</item>
    <item>Montpellier</item>
    </string-array>

    <string-array name="states2">
    <item>Selecetd City*</item>
    <item>Berlino</item>
    <item>Monaco</item>
    <item>Amburgo</item>
    </string-array>

    </resources>






    e cliccando sulla città si visualizzeranno nel terzo spinner altre voci


    file structure.xml
    <resources>
    <string-array name="structure">
    <item>Selecetd Structure*</item>
    <item>Restaurant</item>
    <item>Hotel</item>
    <item>Park</item>
    </string-array>
    </resources>


    Vorrei che il secondo Spinner si caricasse in base all'item selezionato nel primo e di il terzo Spinner si caricasse in base all'item selezionato nel secondo.Caricamento secondo spinner in base all'item selezionato del primo
    mi potresti dare qualche aiuto/suggerimento? Grazie

  6. #6
    per popolare il primo Spinner nella MainActivity faccio così:

    codice:
     
    Spinner s = (Spinner) findViewById(R.id.spinner);
    final ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
            R.array.states, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    s.setAdapter(adapter);
    s.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            Toast.makeText(getApplicationContext(), adapter.getItem(arg2).toString(),
                    Toast.LENGTH_LONG).show();
        }
        @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        }
    });
    per recuperare l'item selezionato e caricare il secondo Spinner in base all'item selezionato come posso fare?
    Grazie

  7. #7
    Ho modificato un pò il tutto.

    Popolare il secondo Spinner in base all'item selezionato nel primo, (il terzo spinner è uguale per tutte le voci)
    Creo l'.apk e non mi da nessun errore.

    lo installo sul dispositivo, l'applicazione parte arrivo al modulo vedo i 3 Spinner ma non mi da nessun errore.


    Come posso risolverlo?

    di seguito il codice che popola gli Spinner.

    codice:
     public class DatiProfessione extends AppCompatActivity {
        @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.moduloprofessione);
    
            Spinner professione = (Spinner)findViewById(R.id.professione);
            final ArrayAdapter<CharSequence> adapter_professione = ArrayAdapter.createFromResource(this, R.array.professione, android.R.layout.simple_spinner_item);
            adapter_professione.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            professione.setAdapter(adapter_professione);
            professione.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                    String selezionata = "p"+position;
                    Log.d("sel",selezionata);
                    final Spinner professione_specifica;
                    final Spinner professione_livello;
                    professione_specifica = (Spinner)findViewById(R.id.professione_specifica);
                    professione_specifica.setAdapter(null);
                    professione_specifica.setVisibility(View.GONE);
                    professione_livello = (Spinner)findViewById(R.id.professione_livello);
                    professione_livello.setAdapter(null);
                    professione_livello.setVisibility(View.GONE);
                    if( !selezionata.equals("p0") && !selezionata.equals("p9") ){
                        int resourceId = getResources().getIdentifier(selezionata, "array", getPackageName());
                        Log.d("num",String.valueOf(resourceId));
                        final ArrayAdapter<CharSequence> adapter_professione_specifica = ArrayAdapter.createFromResource(DatiProfessione.this, resourceId, android.R.layout.simple_spinner_item);
                        adapter_professione_specifica.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        professione_specifica.setAdapter(adapter_professione_specifica);
                        professione_specifica.setClickable(true);
                        professione_specifica.setFocusable(true);
                        professione_specifica.setVisibility(View.VISIBLE);
                        professione_specifica.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                            @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                                final Spinner professione_livello;
                                professione_livello = (Spinner)findViewById(R.id.professione_livello);
                                if( position != 0 ){
                                    final ArrayAdapter<CharSequence> adapter_professione_livello = ArrayAdapter.createFromResource(DatiProfessione.this, R.array.professione_livello, android.R.layout.simple_spinner_item);
                                    adapter_professione_livello.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                                    professione_livello.setAdapter(adapter_professione_livello);
                                    professione_livello.setClickable(true);
                                    professione_livello.setFocusable(true);
                                    professione_livello.setVisibility(View.VISIBLE);
                                }
                            }
    
                            @Override
    public void onNothingSelected(AdapterView<?> parent) {
    
                            }
                        });
                    }else{
                        professione_specifica.setClickable(false);
                        professione_specifica.setFocusable(false);
                        professione_livello.setClickable(false);
                        professione_livello.setFocusable(false);
                        professione_specifica.setAdapter(null);
                        professione_livello.setAdapter(null);
                        professione_specifica.setVisibility(View.GONE);
                        professione_livello.setVisibility(View.GONE);
                    }
                }
    
                @Override
    public void onNothingSelected(AdapterView<?> parent) {
    
                }
            });
    
        }
    
        @Override
    protected void onStart() {
            super.onStart();
            ScrollView rel = (ScrollView) findViewById(R.id.scroll);
            Resources res = getResources();
            Drawable drawable = res.getDrawable(R.drawable.bkg);
            rel.setBackground(drawable);
        }
    
    
    }
    Grazie

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.