Je souhaite que le compteur affiche le nom du pays même si une autre liste est sélectionnée. J'ai utilisé une vue de texte qui affiche l'élément sélectionné de la liste Spinner. Comme j'ai utilisé la méthode setselection pour définir le titre de spinner sur Country, EditText change également. J'ai parcouru divers sujets qui ont répondu à ce sujet mais je n'ai pas trouvé de réponse appropriée
Je joins mon code ci-dessous
MainActivity.Java
package com.example.spinner;
import Android.os.Bundle;
import Android.app.Activity;
import Android.database.Cursor;
import Android.view.Menu;
import Android.view.View;
import Android.widget.AdapterView;
import Android.widget.AdapterView.OnItemSelectedListener;
import Android.widget.ArrayAdapter;
import Android.widget.Spinner;
import Android.widget.TextView;
public class MainActivity extends Activity {
Spinner sp;
TextView t;
String[] country;
int sp_position;
String selected;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String myString = "Country";
sp = (Spinner)findViewById(R.id.spinner1);
t = (TextView)findViewById(R.id.textView1);
country = getResources().getStringArray(R.array.spinner);
ArrayAdapter<String> ad = new ArrayAdapter<String>(MainActivity.this, Android.R.layout.simple_spinner_dropdown_item,country);
sp_position = ad.getPosition(myString);
sp.setAdapter(ad);
ad.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);
sp.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
selected = sp.getSelectedItem().toString();
System.out.println(selected);
setid();
}
private void setid() {
sp.setSelection(sp_position);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
t.setText(selected);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Mon fichier XML
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
Android:id="@+id/textView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:layout_alignParentTop="true"
Android:layout_marginLeft="48dp"
Android:layout_marginTop="69dp"
Android:maxLines="4"
Android:hint="Address" />
<Spinner
Android:id="@+id/spinner1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignRight="@+id/textView1"
Android:layout_below="@+id/textView1"
Android:layout_marginTop="72dp"
/>
</RelativeLayout>
Mon STRINGS.XML
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Spinner</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string-array name="spinner">
<item>Country</item>
<item>India</item>
<item>Russia</item>
<item>USA</item>
<item>France</item>
<item>United Kingdom</item>
</string-array>
<string name ="Country">Country</string>
</resources>
Mon exigence est celle qui est sélectionnée dans la fenêtre d'affichage, la vue Textview doit afficher l'élément sélectionné, mais cette dernière doit toujours afficher le premier élément ou dans mon cas, le pays
Utilisez ce code
déclaration
String selected, spinner_item;
spinner code
sp.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
selected = sp.getSelectedItem().toString();
if (!selected.equals("Country"))
spinner_item = selected;
System.out.println(selected);
setid();
}
private void setid() {
sp.setSelection(sp_position);
t.setText(spinner_item);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
spinner.setPrompt("Pick One");
Vous avez seulement besoin de 3 lignes de code pour cela:
(1) Déclarez une variable globale utilisée pour enregistrer et charger l'ID d'élément de rotation. Par global, je veux dire le déclarer juste après "public class MainActivity".
int mySpinner_selectedId;
(2) Ensuite, ajoutez le code suivant APRÈS que l’utilisateur ait fait son choix. Un bon emplacement serait un bouton qui apparaît avec votre spinner.
mySpinner_selectedId = mySpinner.getSelectedItemPosition();
(3) Enfin, ajoutez le code suivant juste après "mySpinner.setAdapter (adapter);" pour charger le dernier élément sélectionné.
mySpinner.setSelection(mySpinner_selectedId);
Vous êtes les bienvenus.
Utilisez Android:Prompt="@string/select"
dans spinner ....
Faites-le de cette façon . Après avoir placé le textView setSelection sur la 0ème position de votre liste de spinner
sp.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
selected = sp.getSelectedItem().toString();
System.out.println(selected);
t.setText(selected);
sp.setSelection(0);
}
}
Essayez de cette façon.
sp.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
//selected = sp.getSelectedItem().toString();
//System.out.println(selected);
if(arg2!=0)
t.setText(sp.getSelectedItem().toString());
sp.setSelection(0);
}
}
J'espère que cela t'aidera. Laissez-moi savoir ce qui se passe. Je vous remercie.
Essaye ça:
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
spinner.setSelection(pos);
}
Dans la méthode onItemSelected
, ajoutez ce code sp.setSelection(0);
Je l'ai fait d'une manière simple
Ajoutez le texte par défaut au début ou à la fin de l'adaptateur (dans mon cas, fin) et définissez cet élément comme sélection par défaut . ---- Obtenez également la position de sélection par défaut, de sorte qu'aucune action ne sera effectuée dans setOnItemSelectedListener ().
taskName.add("one");
taskName.add("two");
taskName.add("select a task");
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, Android.R.layout.simple_spinner_dropdown_item, taskName);
binding.spnTask.setAdapter(adapter);
binding.spnTask.setSelection(adapter.getPosition("select a task name"));
final int defaultPosition = binding.spnTask.getSelectedItemPosition();
Vérifier que la position sélectionnée est la position du texte par défaut
binding.spnTask.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (position == defaultPosition) {
Toast.makeText(this, "No Action", Toast.LENGTH_SHORT).show();
}else{ Toast.makeText(this, "Your Action" , Toast.LENGTH_SHORT).show(); }
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
essaye ça
Countryspinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1,
int position, long arg3) {
if (position == 0) {
txtSpinner1.setHint("Select Country");
} else {
txtSpinner1.setText(CountryList.get(position));
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
txtSpinner1.setHint("Select Country");
}
});