android自动设置spinner项,如何将默认文本设置为Spinner
我想设置微调器以显示名称country,即使选择了任何其他列表。 我使用了一个textview,它显示了Spinner List的选定项目。 当我使用setselection方法将微调器标题设置为Country时,EditText最终也会更改。 我经历了关于此的各种主题,但未find合适的回复我在下面附上我的代码MainActivity.javapackage com.example.spinne
我想设置微调器以显示名称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) { } });
更多推荐
所有评论(0)