Problème d'affichage avec un spinner

Fermé
pascalh - 20 août 2016 à 00:08
 pascalh - 24 août 2016 à 20:40
Bonjour,

J'implémente une application sous Android studio.
Je remplis une liste déroulante. Lorsque je sélectionne un item dans la liste, celui ne s'affiche pas et en plus la méthode onItemSelected n'est pas appelée.
Merci pour votre aide.

Ci après le code de mon Adapter CoureurSpinnerAdapter :
public class CoureurSpinnerAdapter extends ArrayAdapter<String> implements SpinnerAdapter {
    // Atributs privés
    private Context pContext;
    private int pLayoutResourceId;
    private int pTextViewResourceId;
    private ArrayList<String> pListeCoureurs;
    private LayoutInflater pInflater;
 
    // Constructeur
    public CoureurSpinnerAdapter(Context context, int resource, int textViewResourceId, ArrayList<String> listeCoureurs) {
        super(context, resource, textViewResourceId, listeCoureurs);
        this.pContext = context;
        this.pLayoutResourceId = resource;
        this.pTextViewResourceId = textViewResourceId;
        this.pListeCoureurs = listeCoureurs;
        this.pInflater = LayoutInflater.from(pContext);
    }
 
    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent) {
        View lView = convertView;
        if (lView == null) {
            lView = pInflater.inflate(pLayoutResourceId, parent, false);
        }
        else {
        }
        if ((pListeCoureurs != null) && (position < pListeCoureurs.size())) {
            TextView lTextView = (TextView) lView.findViewById(pTextViewResourceId);
            lTextView.setText(pListeCoureurs.get(position));
        }
        else {
        }
        return(lView);
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        /*TextView lTextView = new TextView(this.pContext);
        lTextView.setText(this.pListeCoureurs.get(position));
        return(lTextView);*/
        View lView = convertView;
        if (lView == null) {
            lView = pInflater.inflate(pLayoutResourceId, parent, false);
        }
        else {
        }
        if ((pListeCoureurs != null) && (position < pListeCoureurs.size())) {
            TextView lTextView = (TextView) lView.findViewById(pTextViewResourceId);
            lTextView.setText(pListeCoureurs.get(position));
        }
        else {
        }
        return(lView);
    }
 
    @Override
    public int getCount() {
        return(pListeCoureurs.size());
    }
 
    @Override
    public String getItem(int position) {
        return (pListeCoureurs.get(position));
    }
 
    @Override
    public long getItemId(int position) {
        return (position);
    }
}


Ci après le code de mon activité TabCourse :
public class TabCourse extends Fragment {
    private CoureurSpinnerAdapter pCoureurSpinnerAdapter;
    private Button pBoutonDemarrer;
    private Button pBoutonArreter;
    private Button pBoutonPause;
    private Chronometer pChronometre;
    private Button pBoutonPasserRelai;
    private TextView pTextViewProchainCoureur;
    private Spinner pSpinnerProchainCoureur;
 
    //Overriden method onCreateView
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View lView = inflater.inflate(R.layout.tab_course, container, false);
        pCoureurSpinnerAdapter = new CoureurSpinnerAdapter(lView.getContext(), R.layout.spinner_coureur, R.id.textViewSpinnerCoureur, TabEquipe.pEquipe.lireListeCoureurs());
        pBoutonDemarrer = (Button) lView.findViewById(R.id.ButtonDemarrer);
        pBoutonArreter = (Button) lView.findViewById(R.id.ButtonArreter);
        pBoutonPause = (Button) lView.findViewById(R.id.ButtonPause);
        pChronometre = (Chronometer) lView.findViewById(R.id.chronometer);
        pBoutonPasserRelai = (Button) lView.findViewById(R.id.buttonPasserRelai);
        pTextViewProchainCoureur = (TextView) lView.findViewById(R.id.textViewProchainCoureur);
        pSpinnerProchainCoureur = (Spinner) lView.findViewById(R.id.spinnerProchainCoureur);
        pBoutonDemarrer.setEnabled(false);
        pBoutonArreter.setEnabled(false);
        pBoutonPause.setEnabled(false);
        pBoutonPasserRelai.setEnabled(false);
        pBoutonDemarrer.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                pBoutonDemarrer.setEnabled(false);
                pBoutonArreter.setEnabled(true);
                pBoutonPause.setEnabled(true);
                pBoutonPasserRelai.setEnabled(true);
                pChronometre.start();
            }
        });
        pBoutonArreter.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                pBoutonDemarrer.setEnabled(true);
                pBoutonArreter.setClickable(false);
                pBoutonPause.setEnabled(false);
                pBoutonPasserRelai.setEnabled(false);
                pChronometre.stop();
            }
        });
        pBoutonPause.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                pBoutonDemarrer.setEnabled(false);
                pBoutonArreter.setEnabled(false);
                pBoutonPause.setEnabled(true);
                pBoutonPasserRelai.setEnabled(false);
                pChronometre.stop();
            }
        });
        pBoutonPasserRelai.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                pBoutonDemarrer.setEnabled(false);
                pBoutonArreter.setEnabled(false);
                pBoutonPause.setEnabled(true);
                pBoutonPasserRelai.setEnabled(false);
            }
        });
        pCoureurSpinnerAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
        pSpinnerProchainCoureur.setAdapter(pCoureurSpinnerAdapter);
        pSpinnerProchainCoureur.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                //pSpinnerProchainCoureur.setSelection(position);
                pTextViewProchainCoureur.setText(parent.getItemAtPosition(position).toString());
                pBoutonDemarrer.setClickable(true);
            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
        //Returning the layout file after inflating
        //Change R.layout.tab_course in you classes
        return(lView);
    }
}

4 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
24 août 2016 à 10:43
Hello,

Y'a-t-il eu du neuf? As-tu réussi à te débloquer?
0
Non, pas pour le moment.
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
24 août 2016 à 14:17
Lorsque je sélectionne un item dans la liste, celui ne s'affiche pas et en plus la méthode onItemSelected n'est pas appelée.
Je ne comprends pas cette phrase...Que veux-tu dire?
0
J'ai bien une liste sous forme de "drop down list" avec n choix possibles. Je sélectionne un élément de cette liste, mais celui ne reste pas affiché.
De plus, la méthode onItemSelected qui est censée se déclencher, ne s'exécute pas.
0