Ich möchte das Drehfeld so einstellen, dass das Namensland angezeigt wird, auch wenn eine andere Liste ausgewählt ist. Ich habe eine Textansicht verwendet, die das ausgewählte Element der Spinnerliste anzeigt. Da ich mit der setselection-Methode den Spinner-Titel auf Country gesetzt habe, ändert sich auch der EditText. Ich habe verschiedene Antworten zu diesem Thema gegeben, aber keine passende Antwort gefunden
Ich füge unten meinen Code hinzu
Hauptaktivität.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;
}
}
Meine XML-Datei
<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>
Meine 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>
Meine Anforderung ist das, was im Spinner ausgewählt wird. In der Textansicht sollte das ausgewählte Element angezeigt werden. Der Spinner sollte jedoch immer das erste Element oder in meinem Fall Land anzeigen
Verwenden Sie diesen Code
erklärung
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");
Sie benötigen dazu nur 3 Zeilen Code:
(1) Deklarieren Sie eine globale Variable, die zum Speichern und Laden der Spinner-Artikel-ID verwendet wird. Mit global meine ich die Deklaration direkt nach "public class MainActivity erweitert Aktivität {".
int mySpinner_selectedId;
(2) Fügen Sie anschließend den folgenden Code ein, nachdem der Benutzer seine Wahl getroffen hat. Eine gute Position wäre eine Schaltfläche, die zusammen mit Ihrem Spinner angezeigt wird.
mySpinner_selectedId = mySpinner.getSelectedItemPosition();
(3) Fügen Sie schließlich den folgenden Code direkt nach "mySpinner.setAdapter (adapter)" ein. um den zuletzt ausgewählten Artikel zu laden.
mySpinner.setSelection(mySpinner_selectedId);
Sie sind am meisten willkommen.
Verwenden Sie Android:Prompt="@string/select"
im Spinner ....
Machen Sie es auf diese Weise . Nachdem Sie textView setSelection auf die 0. Position Ihrer Spinnerliste gesetzt haben
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);
}
}
Versuchen Sie es auf diese Weise.
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);
}
}
Ich hoffe, dies wird dir helfen. Lass mich wissen was passiert. Vielen Dank.
Versuche dies:
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
spinner.setSelection(pos);
}
In onItemSelected
-Methode fügen Sie diesen Code sp.setSelection(0);
hinzu.
Ich habe das auf einfache Weise gemacht
Fügen Sie Standardtext am Adapter zuerst oder Endposition (in meinem Fall Ende) hinzu und setzen Sie diesen Eintrag als Standardauswahl . ---- Ruft auch die Standardauswahlposition ab. Damit keine Aktion in setOnItemSelectedListener () ausgeführt wird.
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();
Überprüfen Sie, ob die ausgewählte Position die Standardtextposition ist
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) {
}
});
versuche dies
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");
}
});