0
votes

Définition d'un spinner sélectionné par JSON

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);


4 commentaires

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.


3 Réponses :


0
votes

Tout d'abord, vous devez obtenir la position de votre article à l'intérieur de l'adaptateur xxx

puis vous pouvez définir une valeur par défaut comme celle-ci xxx

Bonne chance!


7 commentaires

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?



0
votes

Le moyen le plus simple consiste à saisir la position de l'état de votre adaptateur par état . Par exemple: xxx

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.


10 commentaires

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) 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)


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.



0
votes

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
    }

1 commentaires

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?