Je fais une application Android qui demande aux utilisateurs de sélectionner un pays et une ville via Spinner.
Premier, je reçois des données de JSON, comme ceci: p>
List<String> states = new ArrayList<>(); int cityPosition = states.indexOf(City); SpinnerCity.setSelection(cityPosition);
3 Réponses :
Tout d'abord, vous devez obtenir la position de votre article à l'intérieur de l'adaptateur puis vous pouvez définir une valeur par défaut comme celle-ci p> Bonne chance! P> p>
dois-je réécrire la statut de classe ??
Désolé, la méthode est "GetPosition", pas "Get" Simplement erreur, essayez ceci
String état = json.getdata.getcountry (); INT POSITION = STEADAPTER.GETPOSITION (VILLE); //Erreur
Pouvez-vous poster l'erreur? Appelez-vous des méthodes après SpinnerCity.Settadapter (Stateadapter); ?
il demandera à MT de créer une option de méthode dans Stateadapter
GetPosition C'est une méthode de Arrayadapter. Dans votre classe SteeadAPTER, vous pouvez remplacer cette méthode, vous pouvez l'utiliser: @Override Public int getPosition (@Nullable String item) {retour Super.getposition (article); }
Semble que la chaîne peut simplement mettre en place. Est-ce que une idée?
Le moyen le plus simple consiste à saisir la position de l'état de votre adaptateur par pour effectuer ce travail correctement la valeur en état et dans l'adaptateur doit être égal.
S'ils ne sont pas égaux, la position ne sera pas retournée correctement. P> p> état code>.
Par exemple:
Dans la classe Stateadapter, je n'ai pas "getItemposition"?
INT POSITION = STEADAPTER.GETPOSITION (Etat); où est l'état ?? Parce que String State = json.getdata.getcountry, si je mets String State, ce sera une erreur
il demandera à MT de créer une option de méthode dans Stateadapter
Je vois aussi que vous faites une erreur de compilation ici: (String State) CODE> Vous ne pouvez pas fournir de valeur comme ceci, vous devriez l'initialement State d'abord:
String State = json.getdata.getcountry; puis appelle Stateadapter.geadPosition (State) Code>
Vous n'êtes pas obligé de créer une méthode getPosition (), arrayadapter l'avoir déjà
Comme vous l'avez dit, Init String State, String State = Les données de JSON, et je peux voir que l'état a vraiment de la valeur, une chaîne informatique, alors j'appelle INT Position = Stateadapter.getPosition (Ville), elle montrera "GetPosition dans Stateadapter ne peut pas être appliquée à java.lang.string "
Pourquoi la ville ?? Et regardez cette `spinnerarea.setselected (cordon de cordes);` C'est faux Java qui ne fonctionne pas comme ça. Vous ne devez fournir que la référence de la ville de la ville et non à cordes.
, vous avez raison, mais je reçois des données d'état est une chaîne, je ne sais pas comment changer de chaîne vers INT? C'est pourquoi INT POSITION = STEADAPTER.GETPOSITION (VILLE); est toujours obtenir des messages d'erreur.
On dirait que nous parlons dans différentes langues, désolé je ne peux pas expliquer plus de détail que cela.
C'est bon, vous m'aidez vraiment beaucoup, merci.
Vous ne pouvez pas définir l'adaptateur de fileur avec arrayliste de classe de modèle personnalisée Tapez, liste des lignes d'information. P>
SpinnerCity.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){ @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { State cityDetails = statesList.get(position); // here do like this List<String> cityList = cityDetails.getCities(); ArrayAdapter citiesAdapter = new ArrayAdapter<>(this, R.layout.city_list, R.id.citySpinnerText, cityList); SpinnerArea.setAdapter(citiesAdapter); // SpinnerArea.setSelected(String city); // Remove this, no use }
Je sais Spinnerarea.SetsElement (ville de cordes) est faux. donc je modifie mon code comme: Int position = statisteadapter.getposition (statslist.get (3)); // Je peux obtenir position, alors: statspinner.setselection (position); // aucune question, mais je ne connais pas la postition de données de JSON?
Pouvez-vous partager votre réponse JSON
Vous voulez dire, essayant d'afficher la chaîne "State" comme première valeur et suivi des données API dans Spinner Droite?
Les données de Mes JSON sont les suivantes: {"Ville": "Taipei", "Zone": ["Jhongshan", "Songshan"]} Je sais que la clé est Stateadapter, mais je ne sais pas comment modifier?
@Arjun G: Oui, j'essaie de mettre de la chaîne dans Spinner.Setelection (String, True), mais semble ne peut pas mettre de la chaîne dans Spinner.Setselection, il a besoin d'int.