it-swarm.com.de

So legen Sie einen Standardtext für einen Spinner fest

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

8
Saraschandraa

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

        }
    });
12
spinner.setPrompt("Pick One");
8
raman rayat

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.

2
Jun

Verwenden Sie Android:Prompt="@string/select" im Spinner ....

2
Abhishek Patel

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);
    }
}
2
Manishika

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.

1
Gunaseelan

Versuche dies:

    public void onItemSelected(AdapterView<?> parent, View view, 
        int pos, long id) {

           spinner.setSelection(pos);

    }
1
Richa

In onItemSelected-Methode fügen Sie diesen Code sp.setSelection(0); hinzu.

0
jyomin

Ich habe das auf einfache Weise gemacht  

  1. 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();
    
  2. Ü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) {
    
        }
    });
    
0

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

    });
0
Invader