Autore Topic: Item selezionato in uno spinner  (Letto 1056 volte)

Offline marco_88

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Sistema operativo:
    Kubuntu 13.10
Item selezionato in uno spinner
« il: 23 Marzo 2014, 13:52:22 CET »
0
Salve.

Qualcuno di voi sa come leggere come valore selezionato, direttamente dal database mysql?

Mi spiego meglio.

In un Activity ho inserito 2 spinner, uno carica la lista di utenti da una tabella differente rispetto a quella utilizzata per caricare il resto delle informazioni, e l'altro invece è statico, però quello che scelgo poi viene scritto nel database.

Suffermiamoci prima nel secondo caso perchè è più semplice.

Ho uno spinner che ha 5 valori, ne seleziono uno, e quando aggiungo un nuovo impianto per esempio viene scritto nel database il giusto valore che ho selezionato dallo spinner.

Il problema si pone quando io clicco sull'impianto appena creato mi mostra sempre il primo elemento dello spinner, e non lo legge dal database.

Come si fa a prendere come item selezionato di uno spinner, direttamente dal database?

Grazie

Marco

Offline a_droid

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: +5
    • Mostra profilo
Re:Item selezionato in uno spinner
« Risposta #1 il: 24 Marzo 2014, 10:00:42 CET »
0
Ciao,
puoi incollare il codice del caso?

Comunque in generale il metodo per selezionare un elemento nello spinner è
Codice (Java): [Seleziona]
spinner.setSelection(position)

Offline marco_88

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Sistema operativo:
    Kubuntu 13.10
Re:Item selezionato in uno spinner
« Risposta #2 il: 24 Marzo 2014, 10:25:59 CET »
0
Il setSelection ci ho provato, ma non ci sono riuscito.
O meglio ho provato con il getPosition dentro il setSelection ma funziona solo se gli metto staticamente un valore che faccia parte del range, ma io devo leggere quel valore dal database.

Il codice lo avevo scritto in un altro topic, magari lo riposto qui:

Codice: [Seleziona]
package com.example.tabstelegeatest;

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;

import com.actionbarsherlock.app.SherlockFragment;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

public class EditPlantFragment extends SherlockFragment implements AdapterView.OnItemSelectedListener {

    EditText txtName;
    Spinner txtFullName;
    Spinner txtType;
    Button btnSave;
    Button btnDelete;

    String pid;

    // Progress Dialog
    private ProgressDialog pDialog;

    // JSON parser class
    JSONParser jsonParser = new JSONParser();

    // single plant url
    private static final String url_plant_details = "http://192.168.0.8/test/telegea/get_plant_details.php";

    // url to update plant
    private static final String url_update_plant = "http://192.168.0.8/test/telegea/update_plant.php";

    // url to delete plant
    private static final String url_delete_plant = "http://192.168.0.8/test/telegea/delete_plant.php";

    private static String url_all_users = "http://192.168.0.8/test/telegea/get_all_users.php";

    // JSON Node names
    private static final String TAG_SUCCESS = "success";
    private static final String TAG_PLANTS = "plants";
    private static final String TAG_PID = "id";
    private static final String TAG_NAME = "name";
    private static final String TAG_USER_ID = "user_id";
    private static final String TAG_TYPE = "type";

    private ArrayList<Users> usersList;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View mainView = inflater.inflate(R.layout.edit_plant, container, false);
        return mainView;
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // save button
        btnSave = (Button) getView().findViewById(R.id.btnSave);
        btnDelete = (Button) getView().findViewById(R.id.btnDelete);

        // Edit Text
        txtName = (EditText) getView().findViewById(R.id.inputName);
        txtFullName = (Spinner) getView().findViewById(R.id.inputFullName);
        txtType = (Spinner) getView().findViewById(R.id.inputType);

        usersList = new ArrayList<Users>();

        txtFullName.setOnItemSelectedListener(this);

        // getting plant details from intent
        Intent i = getActivity().getIntent();

        // getting plant id from intent
        pid = i.getStringExtra(TAG_PID);

        // Getting complete plant details in background thread
        new GetPlantDetails().execute();
        new GetUsers().execute();

        // save button click event
        btnSave.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // starting background task to update plant
                new SavePlantDetails().execute();
            }
        });

        // Delete button click event
        btnDelete.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // deleting plant in background thread
                new DeletePlant().execute();
            }
        });

    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        parent.getItemAtPosition(position);
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }

    private class GetUsers extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(getActivity());
            pDialog.setMessage("Fetching users..");
            pDialog.setCancelable(false);
            pDialog.show();

        }

        @Override
        protected Void doInBackground(Void... arg0) {
            ServiceHandler jsonParser = new ServiceHandler();
            String json = jsonParser.makeServiceCall(url_all_users, ServiceHandler.GET);

            Log.e("Response: ", "> " + json);

            if (json != null) {
                try {
                    JSONObject jsonObj = new JSONObject(json);
                    if (jsonObj != null) {
                        JSONArray users = jsonObj
                                .getJSONArray("users_view");

                        for (int i = 0; i < users.length(); i++) {
                            JSONObject userObj = (JSONObject) users.get(i);
                            Users user = new Users(userObj.getInt("id"),
                                    userObj.getString("id"));
                            usersList.add(user);
                        }
                    }

                } catch (JSONException e) {
                    e.printStackTrace();
                }

            } else {
                Log.e("JSON Data", "Didn't receive any data from server!");
            }

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            if (pDialog.isShowing())
                pDialog.dismiss();
            populateSpinner();
        }

    }

    /**
     * Adding spinner data
     * */
    private void populateSpinner() {
        List<String> labels = new ArrayList<String>();

        for (int i = 0; i < usersList.size(); i++) {
            labels.add(usersList.get(i).getName());
        }

        // Creating adapter for spinner
        ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_spinner_item, labels);

        // Drop down layout style - list view with radio button
        spinnerAdapter
                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        // attaching data adapter to spinner
        txtFullName.setAdapter(spinnerAdapter);
    }

    /**
     * Background Async Task to Get complete plant details
     * */
    class GetPlantDetails extends AsyncTask<String, String, JSONObject> {

        /**
         * Before starting background thread Show Progress Dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(getActivity());
            pDialog.setMessage("Loading plant details. Please wait...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        /**
         * Getting plant details in background thread
         * */
        protected JSONObject doInBackground(String... args) {
            // Check for success tag
            int success;
            try {
                // Building Parameters
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("id", pid));

                // getting plant details by making HTTP request
                // Note that plant details url will use GET request
                JSONObject json = jsonParser.makeHttpRequest(
                        url_plant_details, "GET", params);

                // check your log for json response
                Log.d("Single Plant Details", json.toString());

                // json success tag
                success = json.getInt(TAG_SUCCESS);
                if (success == 1) {
                    // successfully received plant details
                    JSONArray plantObj = json
                            .getJSONArray(TAG_PLANTS); // JSON Array

                    // get first plant object from JSON Array
                    JSONObject plant = plantObj.getJSONObject(0);
                    // plant with this id found

                    return plant;

                } else {
                    // plant with id not found
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
            return null;
        }
        /**
         * After completing background task Dismiss the progress dialog
         * **/
        protected void onPostExecute(JSONObject plant) {
            // dismiss the dialog once got all details
            pDialog.dismiss();
            // display plant data in EditText
            try {
                txtName.setText(plant.getString(TAG_NAME));
                //txtFullName.getSelectedItem().toString();
                //txtType.getSelectedItem().toString();

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * Background Async Task to  Save plant Details
     * */
    class SavePlantDetails extends AsyncTask<String, String, String> {

        /**
         * Before starting background thread Show Progress Dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(getActivity());
            pDialog.setMessage("Saving plant ...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        /**
         * Saving plant
         * */
        protected String doInBackground(String... args) {

            // getting updated data from EditTexts
            String name = txtName.getText().toString();
            String user_id = txtFullName.getSelectedItem().toString();
            String type = txtType.getSelectedItem().toString();

            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair(TAG_PID, pid));
            params.add(new BasicNameValuePair(TAG_NAME, name));
            params.add(new BasicNameValuePair(TAG_USER_ID, user_id));
            params.add(new BasicNameValuePair(TAG_TYPE, type));

            // sending modified data through http request
            // Notice that update plant url accepts POST method
            JSONObject json = jsonParser.makeHttpRequest(url_update_plant,
                    "POST", params);

            Log.d("Update Plant Details", json.toString());

            // check json success tag
            try {
                int success = json.getInt(TAG_SUCCESS);

                if (success == 1) {
                    // successfully updated
                    Intent i = getActivity().getIntent();
                    // send result code 100 to notify about plant update
                    getActivity().setResult(100, i);
                    getActivity().finish();
                } else {
                    // failed to update plant
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }

        /**
         * After completing background task Dismiss the progress dialog
         * **/
        protected void onPostExecute(String file_url) {
            // dismiss the dialog once plant updated
            pDialog.dismiss();
        }
    }

    /*****************************************************************
     * Background Async Task to Delete Plant
     * */
    class DeletePlant extends AsyncTask<String, String, String> {

        /**
         * Before starting background thread Show Progress Dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(getActivity());
            pDialog.setMessage("Deleting Plant...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        /**
         * Deleting plant
         * */
        protected String doInBackground(String... args) {

            // Check for success tag
            int success;
            try {
                // Building Parameters
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("id", pid));

                // getting plant details by making HTTP request
                JSONObject json = jsonParser.makeHttpRequest(
                        url_delete_plant, "POST", params);

                // check your log for json response
                Log.d("Delete Plant", json.toString());

                // json success tag
                success = json.getInt(TAG_SUCCESS);
                if (success == 1) {
                    // plant successfully deleted
                    // notify previous activity by sending code 100
                    Intent i = getActivity().getIntent();
                    // send result code 100 to notify about plant deletion
                    getActivity().setResult(100, i);
                    getActivity().finish();
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }

        /**
         * After completing background task Dismiss the progress dialog
         * **/
        protected void onPostExecute(String file_url) {
            // dismiss the dialog once plant deleted
            pDialog.dismiss();

        }

    }
}

L'altro problema in questo codice che attualmente quando apro quest'activity viene la progressbar "Loading plants" e non si leva mai se io non la interrompo.

Se non carico la classe GetUsers non succede, però poi va in crash quando cerco di salvare un qualsiasi valore, invece se io interrompo la progressbar che rimane il salvataggio funziona correttamente.

Ho questi 2 problemi, e dopo ci sta uno spinner statico, non caricato nel database, però deve scrivere il valore nel database, e poi nella selezione deve leggerlo dal database.

Spero potrai aiutarmi, grazie 1000!

Offline a_droid

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: +5
    • Mostra profilo
Re:Item selezionato in uno spinner
« Risposta #3 il: 24 Marzo 2014, 10:37:29 CET »
0
Sì...quando apri un nuovo topic è meglio ripetere tutte le informazioni o al massimo linkare all'altro topic : )

Comunque non ho capito bene quando vuoi che sia selezionato nello spinner l'elemento. Quand'è che selezioni l'impianto?
Quando hai fatto setSelection con una posizione statica e funzionava, in che punto del codice che hai postato l'avevi messo?

Offline marco_88

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Sistema operativo:
    Kubuntu 13.10
Re:Item selezionato in uno spinner
« Risposta #4 il: 24 Marzo 2014, 10:43:43 CET »
0
Lo avevo messo nel PopulateSpinner per quanto riguarda la lista utenti che è una lista che viene caricata da una tabella a parte rispetto al resto delle informazioni.

Ora ti spiego bene.

Le informazioni comprese quelle dell'utente vengono caricate da una tabella chiamata plants, che per avere il riferimento sull'utente utilizza user_id.

La lista degli utenti invece io la carico dalla tabella users dandogli l'id, in questo modo ho nello spinner la lista di tutti gli utenti e questo è ok.

Io voglio che quando apro l'impianto però come valore selezionato mi selezioni il relativo user_id associato ad ogni impianto.

Per migliorare la cosa dovrei fare che se l'user_id è 5 venga scritto il relativo full_name presente nella tabella users, ma a questo ci arriviamo dopo.

Ora è più chiaro cosa voglio?

Praticamente avere come item selezionato il relativo user_id presente nella tabella plants, però la lista utenti è presa dalla tabella users.

Può essere questo il problema che lo rende più difficile?

Anche se io avevo provato anche a caricare la lista utenti con user_id e comunque mi sembra non funzionasse, però in questa maniera non ho la lista completa, ma caricata dagli impianti, quindi mi troverei lo stesso utente più volte se un impianto ha lo stesso utente, e non è quello che voglio.

Marco

Offline a_droid

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: +5
    • Mostra profilo
Re:Item selezionato in uno spinner
« Risposta #5 il: 24 Marzo 2014, 11:12:24 CET »
0
Tu stai usando un adapter di String per lo spinner

Codice (Java): [Seleziona]
   // Creating adapter for spinner
        ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_spinner_item, labels);

che da quanto ho capito contiene i nomi degli utenti, quindi verranno visualizzati i nomi degli utenti nella lista.
Per utitlizzare setSelection(position) devi sapere a quale posizone corrisponde l'oggetto che vuoi selezonare nell'adapter, e per fare questo
devi richiamare il metodo getPosition(oggetto) dell'adapter.

L'adapter utilizza il metodo equals per comparare gli oggetti che contiene, quindi, per come è fatto adesso lo spinner,
dato che usa un adapter di stringhe, se tu facessi :

 
Codice (Java): [Seleziona]
spinner.setSelection( spinnerAdapter.getPosition( "Pippo") );
lo spinner selezionerebbe l'utente con nome "Pippo" se è presente.

Nel tuo caso credo sia meglio legare ogni elemento dello spinner a un id univoco, quindi puoi usare quello dell'utente.
Per fare questo conviene utilizzare un model User che contenga come campi : id, nome, ecc....
A questo punto devi utilizzare un adapter di User non di String e ti devi ricordare di fare l'override del metodo equals nella classe Utente,
e io utilizzerei solo l'id come criterio di uguaglianza.

Dopo aver fatto questo, basta fare
 
Codice (Java): [Seleziona]
spinner.setSelection( spinnerAdapter.getPosition( user );
Dove user è un oggetto di tipo User.
Se hai problemi assicurati di controllare che questo oggetto contenga tutte le proprietà che servono ( id, nome,ecc....)

Offline marco_88

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Sistema operativo:
    Kubuntu 13.10
Re:Item selezionato in uno spinner
« Risposta #6 il: 24 Marzo 2014, 11:19:36 CET »
0
Ora vedo se riesco a replicarmi il progetto a lavoro per provarci, però intanto ti dico che un oggetto User l'ho già creato per popolare lo spinner:

Users:

Codice: [Seleziona]
package com.example.tabstelegeatest;

public class Users {

    private int id;
    private String name;

    public Users(){}

    public Users(int id, String full_name){
        this.id = id;
        this.name = full_name;
    }

    public void setId(int id){
        this.id = id;
    }

    public void setName(String full_name){
        this.name = full_name;
    }

    public int getId(){
        return this.id;
    }

    public String getName(){
        return this.name;
    }

}

Vorrei usare full_name, però per adesso mi accontento dell'id per vedere se prende la giusta associazione.

Fatto così il Model è corretto?

Non ho capito bene la parte di fare un override del metodo equals.

Poi l'ArrayAdapter devo cambiarlo da String a Users quindi? Questo codice che ho preso già considerava un Model nell'esempio.

Comunque grazie, ora vedo se riesco a scaricarmi il codice da casa mia e farlo funzionare qui nel portatile che uso a lavoro.

Marco

Offline a_droid

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: +5
    • Mostra profilo
Re:Item selezionato in uno spinner
« Risposta #7 il: 24 Marzo 2014, 11:37:28 CET »
0
Il metodo equals è un metodo che tutti gli oggetti in Java ereditano dalla classe Object.

E' un concetto relativo a Java, per capire di cosa si tratta puoi fare una ricerca su Internet , questo dovrebbe andare :

Java Collections - hashCode() and equals()

Solitamente gli IDE , ad esempio Eclipse, hanno dei tool di generazione automatica di metodi come equals, toString, hashCode per una data classe.
Di solito ti fanno scegliere quali variabili della classe devono essere presi in considerazione per la generazione automatica.

Offline marco_88

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Sistema operativo:
    Kubuntu 13.10
Re:Item selezionato in uno spinner
« Risposta #8 il: 24 Marzo 2014, 11:40:55 CET »
0
Mi sono spiegato male, intendevo dire come va usata a questo scopo, perchè questo metodo l'ho usato per vedere se dei campi erano vuoti o meno, però non ho capito bene come dovrei usarlo per questo scopo.

Comunque il Model Users è corretto come l'ho scritto?

Mi sto installando android studio nel portatile così posso provare meglio quello che mi dici, però il metodo getPosition l'avevo usato esattamente in quel modo, ma non riuscivo a leggere dal db, ci dovrei quindi inserire come oggetto il model Users e usarlo nell'arrayAdapter?

Grazie

Offline a_droid

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: +5
    • Mostra profilo
Re:Item selezionato in uno spinner
« Risposta #9 il: 24 Marzo 2014, 11:43:40 CET »
0
No... nel model manca il metodo equals, devi fare l'override, te l'ho detto :)
Nel link che ti ho postato dovrebbe esserci un esempio

Offline marco_88

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Sistema operativo:
    Kubuntu 13.10
Re:Item selezionato in uno spinner
« Risposta #10 il: 24 Marzo 2014, 13:57:43 CET »
0
Devo aggiungere una cosa del genere al model:

Codice: [Seleziona]
public boolean equals(Object o){
    if(o == null)                return false;
    if(!(o instanceof) Users) return false;

    Users other = (Users) o;
    return this.id == other.id;
  }

Grazie

Offline a_droid

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: +5
    • Mostra profilo
Re:Item selezionato in uno spinner
« Risposta #11 il: 24 Marzo 2014, 14:23:07 CET »
0
Sì...esatto... usa questo :

Codice (Java): [Seleziona]
@Override
        public boolean equals(Object obj) {
                if (this == obj)
                        return true;
                if (obj == null)
                        return false;
                if (getClass() != obj.getClass())
                        return false;
                Users other = (Users) obj;
                if (id != other.id)
                        return false;
                return true;
        }

Post unito: 24 Marzo 2014, 14:27:22 CET
Piccolo consiglio : in Java di solito si usa per convenzione un nome al singolare per questo tipo di classi. Io la chiamerei "User"
« Ultima modifica: 24 Marzo 2014, 14:27:22 CET da a_droid, Reason: Merged DoublePost »

Offline marco_88

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Sistema operativo:
    Kubuntu 13.10
Re:Item selezionato in uno spinner
« Risposta #12 il: 24 Marzo 2014, 14:29:35 CET »
0
Quindi ricapitolando, aggiungo questa funzione al Model Users, poi invece che usare ArrayAdapter<String>, lo modifico in ArrayAdapter<Users> e nel getPosition gli passo l'Users invece di un valore giusto?

Ora comunque vedo se riesco a provarlo.

Questa cosa può funzionare anche se volessi usare il full_name? Anche se per il full_name dovrei lavorarci anche dal punto di vista php, perchè potrei aver problemi di requerd field e d'incompatibilità di campi fra le vari activity.

Grazie infinite.

Marco

Offline a_droid

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: +5
    • Mostra profilo
Re:Item selezionato in uno spinner
« Risposta #13 il: 24 Marzo 2014, 14:56:03 CET »
0
Devi anche fare l'override del toString() dentro la classe Users.
Nello spinner verrà visualizzata la stringa ritornata dal toString().
Ad esempio questa implementazione del toString farà visualizzare i nomi degli utenti come elementi dello spinner :

Codice (Java): [Seleziona]
@Override
        public String toString() {
                return name;
        }

Se in futuro vorrai visualizzare un altro campo chiamato fullName, dovrai aggiungerlo al model User e modificare il toString per visualizzare ciò che vuoi.

Offline marco_88

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Sistema operativo:
    Kubuntu 13.10
Re:Item selezionato in uno spinner
« Risposta #14 il: 24 Marzo 2014, 15:08:13 CET »
0
Per usare l'id dell'utente adesso non serve questo return name per fare la prova con l'id giusto?

Comunque ho fatto quello che mi hai detto, però come getPosition ci ho messo lo spinner stesso che si dovrebbe caricare l'Object Users, però non va lo stesso.

Penso che lui non riesce a capire a ogni impianto che user_id è caricato.

Io devo leggere il campo user_id della tabella plants, però il model Users non ha questo campo, io uso Users per caricare la lista completa degli utenti sullo spinner, peròio devo leggere il campo user_id di ogni singolo impianto per ID.

Non ne esco fuori, non so proprio come uscirne!

Qui il codice modificato del populateSpinner():

Codice: [Seleziona]
private void populateSpinner() {
        List<Object> labels = new ArrayList<Object>();

        for (int i = 0; i < usersList.size(); i++) {
            labels.add(usersList.get(i).getId());
        }

        // Creating adapter for spinner
        ArrayAdapter<Object> spinnerAdapter = new ArrayAdapter<Object>(getActivity(),
                android.R.layout.simple_spinner_item, labels);

        // Drop down layout style - list view with radio button
        spinnerAdapter
                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);


        // attaching data adapter to spinner
        txtFullName.setAdapter(spinnerAdapter);

        txtFullName.setSelection(spinnerAdapter.getPosition(spinnerAdapter));

    }

PS: Mettendo nel getPosition proprio Users dava errore.

Spero potrai aiutarmi a risolvere il problema!

Grazie

Post unito: 25 Marzo 2014, 11:07:52 CET
Ragionando un po' sulla situazione penso che forse bisognerebbe caricarsi i dettagli del singolo utente e fornirgli sul setSelection l'id dell'utente cliccato con l'user_id di quel singolo utente.

E' un'idea sbagliata?

Non so come fare sinceramente, perchè ci ho provato senza successo, ma forse la strada da prendere è questa. Però è solo un idea.
« Ultima modifica: 25 Marzo 2014, 11:07:52 CET da marco_88, Reason: Merged DoublePost »