我想设置微调器以显示名称country,即使选择了任何其他列表。 我使用了一个textview,它显示了Spinner List的选定项目。 当我使用setselection方法将微调器标题设置为Country时,EditText最终也会更改。 我经历了关于此的各种主题,但未find合适的回复

我在下面附上我的代码

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 ad = new ArrayAdapter(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; } }

我的XML文件

我的STRINGS.XML

Spinner Settings Hello world! Country India Russia USA France United Kingdom Country

我的要求是在微调框中选择的任何内容,Textview应显示所选的项目,但微调器应始终显示第一个项目或在我的情况下显示国家

使用此代码

宣言

String selected, spinner_item;

微调代码

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

这样做吧。 将textView setSelection设置为微调器列表的第0个位置后

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

您只需要3行代码:

(1)声明一个全局variables,用于保存和加载微调器项ID。 通过全局,我的意思是在“公共类MainActivity扩展Activity {”之后宣布它。

int mySpinner_selectedId;

(2)然后,在用户做出选择之后添加以下代码。 一个好的位置是与您的微调器一起出现的按钮。

mySpinner_selectedId = mySpinner.getSelectedItemPosition();

(3)最后,在“mySpinner.setAdapter(adapter);”之后添加以下代码: 加载最后选择的项目。

mySpinner.setSelection(mySpinner_selectedId);

你最受欢迎。

在微调器中使用android:prompt="@string/select" ….

试试这种方式。

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

我希望这能帮到您。 让我知道发生什么事。 谢谢。

尝试这个:

public void onItemSelected(AdapterView> parent, View view, int pos, long id) { spinner.setSelection(pos); }

尝试这个

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

在onItemSelected方法中添加此代码sp.setSelection(0);

我以一种简单的方式做到了这一点

在适配器的第一个或结束位置 (在我的情况下结束)添加默认文本, 并将此项目设置为默认选择 。 —-还获取默认选择位置,以便在setOnItemSelectedListener()中不执行任何操作。

taskName.add("one"); taskName.add("two"); taskName.add("select a task"); ArrayAdapteradapter = 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();

检查所选位置是默认文本位置

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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐