comment ajouter un élément à la Toupie est ArrayAdapter?
j'ai eu un EditText , un bouton et un compteur . Lors d'un clic sur le bouton , le compteur s'ajouter un nouvel élément avec le nom que vous avez entré dans l'EditText. Mais ici, c'est la question, ma carte.méthode add() semble ne fonctionne pas...voici mon code:
public class Spr extends Activity {
Button bt1;
EditText et;
ArrayAdapter<CharSequence> adapter;
Spinner spinner;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bt1 = (Button)this.findViewById(R.id.bt1);
et = (EditText)this.findViewById(R.id.et);
spinner = (Spinner)this.findViewById(R.id.spr);
adapter = ArrayAdapter.createFromResource(
this, R.array.planets_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String temp = et.getText().toString();
adapter.add(temp);
adapter.notifyDataSetChanged();
spinner.setAdapter(adapter);
}
});
spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
Toast.makeText(parent.getContext(), "The planet is " +
parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}});
}
}
merci! ...encore waitting
Vous avez certainement n'avez pas besoin d'appeler spinner.setAdapter() de nouveau dans votre point de Vue.OnClickListener. Votre code ressemble à ça devrait fonctionner, cependant.
Vous n'avez pas besoin d'appeler
je seached la réponse ,et quelqu'un me dit ,appel notifyDataSetChanged()et setAdapter()de nouveau pourrait être l'aide.j'ai donc de l'ajouter,mais cela ne fonctionne toujours pas...quand je le lance ,et cliquez sur le bouton .il sautera d'une erreur : l'application a cessé de l'onu attendue.s'il vous plaît essayer à nouveau...(je pense que le problème est sur la méthode spinner.add(). ) merci pour votre aide!
il serait utile si vous pouviez nous montrer l'exception ci par logcat au moment de l'application se bloque.
il n'y a pas d'exception s'affiche.j'ai essayé : mettre les éléments dans une liste de tableaux al , et ensuite adapter = new ArrayAdapter<String>(... , ... , al ) ...Il fonctionne...ma question est : quelle est la différence entre eux(je veux dire ArrayAdapter.createFromResource()la méthode et la new ArrayAdapter<String>())?? et je suis désolé que mon anglais est pauvre,je désire vous pouvez comprendre ce que je dis... merci beaucoup
Vous n'avez pas besoin d'appeler
notifyDataSetChanged()
. Juste adapter.add()
devrait suffire. Quand vous dites "ne fonctionne pas", que voulez-vous dire?je seached la réponse ,et quelqu'un me dit ,appel notifyDataSetChanged()et setAdapter()de nouveau pourrait être l'aide.j'ai donc de l'ajouter,mais cela ne fonctionne toujours pas...quand je le lance ,et cliquez sur le bouton .il sautera d'une erreur : l'application a cessé de l'onu attendue.s'il vous plaît essayer à nouveau...(je pense que le problème est sur la méthode spinner.add(). ) merci pour votre aide!
il serait utile si vous pouviez nous montrer l'exception ci par logcat au moment de l'application se bloque.
il n'y a pas d'exception s'affiche.j'ai essayé : mettre les éléments dans une liste de tableaux al , et ensuite adapter = new ArrayAdapter<String>(... , ... , al ) ...Il fonctionne...ma question est : quelle est la différence entre eux(je veux dire ArrayAdapter.createFromResource()la méthode et la new ArrayAdapter<String>())?? et je suis désolé que mon anglais est pauvre,je désire vous pouvez comprendre ce que je dis... merci beaucoup
OriginalL'auteur allen | 2010-03-24
Vous devez vous connecter pour publier un commentaire.
Lorsque vous avez créé votre ArrayAdapter vous n'avez pas associé à une redimensionnables Liste, de sorte que lorsque vous ajoutez (), il ne peut pas incrémenter la taille de celui-ci et lance une UnsupportedOperationException.
Essayer quelque chose comme cela:
Vous devez utiliser une Liste. Avec un Tableau comme CharSequence[] vous obtenez le même UnsupportedOperationException exception.
OriginalL'auteur Javi
Javi est de droit, sauf de ne pas faire référence à un tableau pour le deuxième paramètre.
OriginalL'auteur trgraglia
Je crois que c'est prévu, mais pas comme prévu. ArrayAdapter utilisé pour seulement prendre un tableau, mais la liste constructeur a été ajouté plus tard. Je devine sa juste faire une toArray() sur votre liste. C'est pourquoi vous devez appeler ajouter sur la carte, ou de créer une nouvelle carte lors de votre Liste de changements.
OriginalL'auteur AdamC
vous pouvez créer une liste de tableaux et de copier tous recours à cet objet puis créer arrayadaptor et d'envoyer cette liste de tableaux et dans onclicklistener de bouton, ajouter edittext de contenu pour objet arraylist alors appel notifydatasetchanged de adator
OriginalL'auteur Hossein