天道酬勤,学无止境

如何获取微调器中所选项目的值?(How to get the value of a selected item in a spinner?)

问题

我只是在学习 Android 应用程序开发,我不明白如何从微调器Log所选项目的值。

这是我对MainActivity.java的看法

import android.content.ContentResolver;
import android.database.Cursor;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.provider.ContactsContract;

import java.util.ArrayList;

    public class MainActivity extends ActionBarActivity {
        public Spinner contactSpinner = (Spinner) findViewById(R.id.contact_list);

    protected void onCreate(Bundle savedInstanceState) {
        ArrayList contactList = new ArrayList();

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        contactList.add("An item");  
        contactList.add("Another item");  
        contactList.add("A third item");  

        // Add items from contactList to spinner
        ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_dropdown_item,contactList);
        contactSpinner.setAdapter(adapter);
    }

    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        // An item was selected. You can retrieve the selected item using
        parent.getItemAtPosition(pos);

    }

    public void onNothingSelected(AdapterView<?> parent) {
        // Another interface callback
    }

    contactSpinner.setOnItemSelectedListener(this);  
}

我正在关注有关响应用户选择的 Android 开发文档,但使用我的代码,我收到此错误: Could not resolve symbol setOnItemSelectedListener

为什么? 以及如何修复它以便我可以Log微调器中选择的内容?

编辑

此代码有效

package com.example.compy.spookr;

公共类 MainActivity 扩展 ActionBarActivity 实现 AdapterView.OnItemSelectedListener { public Spinner contactSpinner;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ArrayList contactList = new ArrayList();
    contactSpinner = (Spinner) findViewById(R.id.contact_list);
    contactSpinner.setOnItemSelectedListener(this);
    // Rest of code...
}

@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
    // An item was selected. You can retrieve the selected item using
    parent.getItemAtPosition(pos);
    Log.v("onItemSelected",(String) parent.getItemAtPosition(pos));
}

@Override
public void onNothingSelected(AdapterView<?> parent) {
    // Another interface callback
}

// Rest of code ... 

}

回答1

首先,您需要实现要使用这些方法的interface 。 在你的情况下,你可以这样做:

public class MainActivity extends ActionBarActivity implements OnItemSelectedListener{

然后,将@Override放在方法上以描述您想要的行为:

  @Override
  public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
// An item was selected. You can retrieve the selected item using
parent.getItemAtPosition(pos);

}

   @Override
  public void onNothingSelected(AdapterView<?> parent) {
// Another interface callback

}

然后在您的onCreate()设置您的微调监听器:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
contactSpinner = (Spinner) findViewById(R.id.contact_list);
contactSpinner.setOnItemSelectedListener(this);  
....
回答2

我收到此错误:无法解析符号 setOnItemSelectedListener

MainActivity实现OnItemSelectedListener接口:

public class MainActivity extends ActionBarActivity 
                              implements OnItemSelectedListener{
  ....
}

onCreate方法setOnItemSelectedListener添加到 Spinner :

public Spinner contactSpinner;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    contactSpinner = (Spinner) findViewById(R.id.contact_list);
    contactSpinner.setOnItemSelectedListener(this);  
     //... your code here..
}

并在为当前 Activity 设置布局后调用findViewById ,因为 xml 中的视图仅在为 Activity 设置布局后可用,否则应用程序将与NPE崩溃

回答3

您可以使用 getSelectedItem() 方法:

Spinner spinner = (Spinner)findViewById(R.id.spinner);
String selected = spinner.getSelectedItem().toString();

或使用 getItemAtPosition() 方法:

public class SpinnerActivity extends Activity implements OnItemSelectedListener {
    ...
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, 
            int pos, long id) {
        // An item was selected. You can retrieve the selected item using
        // parent.getItemAtPosition(pos)
    }
}

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Android-如何从微调器中获取选定的项目值并将其放入字符串中?(Android - How to get the selected item value from a spinner and put it into a string?)
    问题 我在该线程上阅读了许多类似的问题,但没有一个对我有帮助...这是我的代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Spinner spinner = (Spinner) findViewById(R.id.imc_spinner); // Create an ArrayAdapter using the string array and a default spinner layout ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.imc_array, android.R.layout.simple_spinner_item); // Specify the layout to use when the list of choices appears adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //
  • 更改微调器中所选项目的文本颜色(Change text color of selected item in spinner)
    问题 如何在微调器中更改所选项目的字体颜色? 我可以更改所选项目的背景颜色,下拉项目的颜色等,但不能更改所选项目的文本颜色...我该怎么做? 我的代码是:这是我正在使用的微调器-: <Spinner android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="32dip" android:background="@drawable/mybg" android:divider="@drawable/list_divider" android:drawSelectorOnTop="true" android:popupBackground="#D3D5D3" android:prompt="@string/activityy_prompt" /> 这是mybg.xml <!-- <item android:drawable="@drawable/blue" android:state_pressed="false"/> --> <!-- <item android:drawable="@drawable/back11"/> --> <item android:drawable="@drawable/greenyellow1" android:state_focused=
  • 从微调器中选择项目以显示编辑文本(Select item from spinner to show edittext)
    问题 I am trying to show an EditText when a certain Item from a Spinner is selected. 到目前为止,我已经创建了微调器和 EditText,但我真的不知道下一步是什么。 我不想在 EditText 中显示选择,我只想显示 EditText 字段。 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final EditText editText = (EditText) findViewById(R.id.edit_text_box); editText.getText().toString(); } public void addItemsOnSpinner() { spinner1 = (Spinner) findViewById(R.id.spinner); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource (this, R.array.spinner_item, android.R.layout
  • Android - 如何在微调器上获取所选项目的另一个值(Android - how to get another value of selected item on spinner)
    问题 我有如下的休息响应,我需要将输出填充到微调器。 我已经成功地将“名称”传递给了微调器,它的工作原理。 但我还需要获取“id”,以便我可以使用“id”查询另一个休息请求。 例如,我得到了省 id,然后我使用省 id 来获取城市列表。 { "code": 1000, "message": "OK", "data": [ { "id": "3579010", "name": "Batu" }, { "id": "3579020", "name": "Junrejo" }, { "id": "3579030", "name": "Bumiaji" } ] } 下面是安卓代码 public void initProvinceSpinner() { Call<GetProvinceResponse> call = apiService.getProvinceResponse(); call.enqueue(new Callback<GetProvinceResponse>() { @Override public void onResponse(Call<GetProvinceResponse> call, Response<GetProvinceResponse> response) { ArrayList<GetProvinceResponseData>
  • Android如何从数据驱动的微调器中获取所选项目(Android how to get selected item from data driven spinner)
    问题 新手问题。 我正在使用 SimleCursorAdapter 从 SQLite 表填充微调器,如 Android 开发文档所示: Spinner list=(Spinner)findViewById(R.id.cboModel); SimpleCursorAdapter ModelAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, model, new String[] {"Drug"}, new int[] {android.R.id.text1}); ModelAdapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item); list.setAdapter(ModelAdapter); list.setOnItemSelectedListener(onModelSelect); 我已经设置了一个侦听器,但我不知道如何获取所选项目的文本,它会调出 SQLiteCursor,而不是微调器中的实际文本。 private AdapterView.OnItemSelectedListener onModelSelect= new AdapterView
  • 分配键盘快捷方式以获取Windows资源管理器中所选项目的路径(Assigning keyboard shortcut to get path of selected item in windows explorer)
    问题 我什至不知道这是否有可能,但是我如何将某个组合键绑定到(C#)程序,以便在Windows资源管理器中选择了某些文件后按下该键盘快捷键时,它将调用具有该路径的特定功能文件作为参数。 或者我可以分配一些键盘快捷方式,以便Windows资源管理器在程序中打开选定的文件(这样我就可以将路径传递给已经运行的实例) 谢谢 回答1 您可以将程序修改为作为Shell扩展运行,这会在Windows资源管理器的右键菜单中添加一个程序项,但是显然用C#编码Shell扩展是一个坏主意。 或者,只需做一些工作,AutoHotkey就可以做到这一点。 这是一个示例脚本,当按下某个键盘组合时,该脚本将在Windows资源管理器中重命名所选文件。 您可以对其进行修改以运行C#程序并传递所选文件名。
  • 微调框不显示所选值(Spinner does not show selected value)
    问题 我已经通过在数据库中填充数组列表来实现了微调器,我可以在微调器数组适配器中获取并显示该数组列表,但是如果我在微调器中选择了该项,它就不会显示在微调器中? 这是我的代码, Spinner spinner1 = (Spinner) findViewById(R.id.prospin); ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, providerlist); adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner1.setAdapter(adapter1); 我用这个来得到选中的项目字符串, Spinner provid = (Spinner)findViewById(R.id.prospin); String provider =provid.getSelectedItem().toString(); 谁能帮助我! 回答1 这个答案可能有点愚蠢,但可以尝试一下。 它为我工作。 检查微调器的背景颜色! 如果是白色的话好好享受! 回答2 我遇到了同样的问题
  • 如何在android中的Dynamic Spinner中获取选定的项目id值(How Can Get Selected item id value in Dynamic Spinner in android)
    问题 我在 android 中创建了动态微调器,它显示来自 url 的json数据我在微调器中正确设置了数据,但我得到了所选项目的 id 我怎样才能做到这一点 我设置微调器值的代码是: 私有无效 setSpinData() { if (isNetworkAvailable()) { AsyncHttpClient client = new AsyncHttpClient(); client.setTimeout(800000); final RequestParams params = new RequestParams(); client.get("Here is url", new TextHttpResponseHandler() { @Override public void onFailure(int statusCode, cz.msebera.android.httpclient.Header[] headers, String responseString, Throwable throwable) { Toast.makeText(SpinnerActivity.this, responseString, Toast.LENGTH_SHORT).show(); } @Override public void onSuccess(int statusCode, cz
  • 如何获得微调器的选定值?(How do you get the selected value of a Spinner?)
    问题 我正在尝试从Spinner获取选定的项目字符串。 到目前为止,我已经明白了这一点: bundle.putString(ListDbAdapter.DB_PRI, v.getText().toString()); 这是行不通的,并提供了一个类强制转换异常(我认为我可以将View强制转换为继承它的小部件。显然不行!)那么,如何获得Spinner的选定值? 回答1 要获得微调器的选定值,您可以按照以下示例进行操作。 创建一个实现AdapterView.OnItemSelectedListener的嵌套类。 这将提供一个回调方法,当从微调器中选择一个项目时,该方法将通知您的应用程序。 在该类的“ onItemSelected”方法中,可以获取选定的项目: public class YourItemSelectedListener implements OnItemSelectedListener { public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { String selected = parent.getItemAtPosition(pos).toString(); } public void onNothingSelected(AdapterView parent) {
  • 如何在javascript中获取datalist中所选项目的值?(How to get the value of selected item inside datalist in javascript?)
    问题 我的列表是通过 php 生成的: <input name="txt_name" list="emp_names" autocomplete="off" id="txt_name" class="textbox" onchange="getID(emp_names.text);"/> <datalist id="emp_names"> <?php $host = "localhost"; $user = "root"; $pass = "mark"; $db = "payrolldb"; $cons = mysql_connect($host,$user,$pass); mysql_select_db($db,$cons); //query start $query = "SELECT ID_Employee, CONCAT(LastName,', ',FirstName) AS Name, Department FROM tbl_employeeInfo;"; $result = mysql_query($query); while ($row = mysql_fetch_array($result)) { echo "<option value='".$row['Name']."'>".$row['ID_Employee']."</option>\n"; } ?> <
  • 如何在我的微调器中显示我的联系人数据库值?(how to show my contacts database value in my spinner?)
    问题 在我的布局 xml 中,我有一个微调器,而在我的 Java 中,我有一个带有联系人和一些值的数据库,因此我想知道如何将这些值从数据库中发送或放入微调器中,因此当我单击它时,它会选择联系方式,任何代码示例? 回答1 首先从数据库中获取联系人详细信息。 您可以在 http://codinglookseasy.blogspot.in/2012/08/sqlite-database.html 找到数据库概念的示例代码。 接下来从上面的示例中,您可能已经获得了对象的 ArrayList 并使用 ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list); dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner2.setAdapter(dataAdapter); 这里的 list 可能是来自数据库的 ArrayList 的数据。 (将要从数据库中显示的特定字段存储到此列表中)。 使用 spinner2.getSelectedItem() 它给出了选择的项目并使用从数据库中获得的 ArrayList
  • 重新设置时的 Android Spinner 设置值(Android Spinner setting value when re)
    问题 <Spinner android:id="@+id/spinner1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_below="@+id/editText2" android:layout_marginTop="22dp" android:entries="@array/categorylist" android:prompt="@string/category" /> 我以上述格式创建了微调器! final Spinner spnr= (Spinner)findViewById(R.id.spinner1); String category=spnr.getSelectedItem().toString(); 通过以上述格式获取值来推送 db 中的微调器值。 现在当从数据库中检索值时。 微调器应根据特定值进行设置...我该如何实现任何想法? 回答1 只有当您存储设置为 Spinner 条目的项目数组时,这才有可能。 您可以在微调器中设置所选项目的位置。 所以你必须找出你从数据库中查询的项目的索引。 加载 categorylist 的 StringArray
  • 如何从字符串列表中设置 Spinner 中的值和文本?(How to set the value and text in a Spinner from a string list?)
    问题 我正在研究 android 微调器控件。 我已经填充了要在微调器中显示的字符串列表,例如 String[] items = new String[]{ "Office", "Home", "College", "Uncle's Home", "CoDebuggers"}; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, items); SpinnerName.setAdapter(adapter); 这运行良好,但我需要为我的列表添加唯一 ID,例如 办公室 = 4 家 = 8 大学 = 9 叔叔的家 = 10 CoDebiggers = 55 如何使用字符串列表设置值? 以及如何通过选定的项目更改来获取这些值? 回答1 您必须创建两个数组,一个用于项目,第二个用于项目的值。 String[] items = new String[]{ "Office", "Home", "College", "Uncle's Home", "CoDebuggers"}; int[] items_value = new String[]{ 4, 8, 9, 10, 55}; ArrayAdapter<String>
  • 如何通过值而不是位置来设置微调框的选定项目?(How to set selected item of Spinner by value, not by position?)
    问题 我有一个更新视图,在该视图中,我需要预先选择存储在数据库中的Spinner值。 我当时有这样的想法,但是Adapter没有indexOf方法,所以我陷入了困境。 void setSpinner(String value) { int pos = getSpinnerField().getAdapter().indexOf(value); getSpinnerField().setSelection(pos); } 回答1 假设您的Spinner名为mSpinner ,并且它包含以下选项之一:“某个值”。 要查找和比较微调器中“某些值”的位置,请使用以下命令: String compareValue = "some value"; ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.select_state, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); mSpinner.setAdapter(adapter); if (compareValue != null) { int
  • 以字符串形式获取列表框中所选项目的值(Getting value of selected item in list box as string)
    问题 我正在尝试使用下面的代码获取列表框中所选项目的值,但它始终返回空字符串。 DataSet ds = searchforPrice(Convert.ToString(listBox1.SelectedItem)); 在这里,我试图将所选项目的值作为字符串传递给方法searchforPrice,以从数据库中检索数据集。 如何将所选项目的值检索为字符串? 我正在从组合框向列表框添加项目,而组合框又从数据库加载了项目。 listBox1.Items.Add(comboBox2.Text); 任何人对此都有答案。 回答1 如果要检索项目的显示文本,请使用GetItemText方法: string text = listBox1.GetItemText(listBox1.SelectedItem); 回答2 如果您在应用程序中使用ListBox,并且想要返回ListBox的选定值并将其显示在Label或其他任何东西中,然后使用此代码,它将对您有帮助 private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { label1.Text = listBox1.SelectedItem.ToString(); } 回答3 要获取à列表框中所有选定项的值,可以在DataRowView中转换选定项
  • 如何从微调器中获取int值(How to get int value from spinner)
    问题 我正在使用NetBeans 7.1在Java中进行编码。 我有一个JFrame ,上面有带整数值的微调器,我想知道如何在微调器中获得活动值,这是指用户在程序运行时选择的那个值。 在其他方法上使用它。 回答1 spinner.getValue()应该可以解决问题。 您可以将其转换为Integer ,例如 int value = (Integer) spinner.getValue(); reggoodwin的注释:您还应该在调用getValue() spinner.commitEdit()之前调用spinner.commitEdit() ,以确保使用编辑器手动输入的值会传播到模型,否则,您只会得到旧值。 因此,它应该像下面这样, try { spinner.commitEdit(); } catch ( java.text.ParseException e ) { .. } int value = (Integer) spinner.getValue(); 回答2 String value = getSpinner().getValue() + ""; Integer.parseInt(value) 我的解决方案,这对我有用... 不行: Integer.parseInt( getSpinner().getValue().toString()) //get object
  • 如何使用 jQuery 从 DataList 中获取所选项目的文本值(How to get the text value of a selected item from a DataList using jQuery)
    问题 如何获取 DataList 中选项的文本值? 我需要使用id的值,但我还需要 selectedIndex 的值,即名称。 <input type="text" name="names[]" id="names" list="neym"/> <datalist id="neym"> <option value="example"></option> <option value="example2"></option> <option value="example3"></option> </datalist> 我如何在 jQuery 中做到这一点? 回答1 循环遍历它们并使用 text() 和 val() ,正如其他人指出的那样: $('#neym option').each(function(index) { var id = $(this).val(); var name = $(this).text(); // Do something with the id and name alert('Found ' + name + ' with id ' + id); }); 回答2 用于获取选定索引的文本 $("#neym option:selected").text() 用于获取选定索引的值 $('#neym').attr('value') 回答3 获取所选选项内的文本 $
  • 保存和检索选定的微调器位置(Save and Retrieve Selected Spinner Position)
    问题 您将如何保存和检索微调器选择,以便当您返回时选择微调器上的相同项目? 也许有共同的偏好? 回答1 在sharedPreferences上保存数据(将此代码放在onItemSelected()方法上并保存spinner的所选值的位置): int userChoice = spinner.getSelectedItemPosition(); SharedPreferences sharedPref = getSharedPreferences("FileName",0); SharedPreferences.Editor prefEditor = sharedPref.edit(); prefEditor.putInt("userChoiceSpinner",usersChoice); prefEditor.commit(); 从sharedPreferences获取数据: SharedPreferences sharedPref = getSharedPreferences("FileName",MODE_PRIVATE); int spinnerValue = sharedPref.getInt("userChoiceSpinner",-1); if(spinnerValue != -1) { // set the selected value of the spinner
  • 根据第一个微调器的选定值从第二个微调器中获取选定值(get selected value from second spinner on the basis of selected value of first spinner)
    问题 我想根据第一个微调器中选择的值从第二个微调器中选择值。例如,我的第一个微调器显示国家/地区名称,第二个微调器显示相应国家/地区的城市名称。问题是第二个微调器始终选择第一个值.例如,第一个微调器是国家名称-印度,巴基斯坦,中国,第二个微调器是城市名称,所以如果我选择印度,而我的微调器是-德里,上,旁遮普,那么它总是得到选择的值作为德里。当我改变即使函数 onItemSelected 不再调用,选定的值也不会再次调用。相同的代码是- public class LaunchCampaign1 extends Activity implements OnItemSelectedListener,OnClickListener { String[] countryStr = {"Select", "India", "Pakistan", "China"}; String[] states_india = {"Select", "Delhi", "UP", "Bihar"}; String[] states_china = { "Select","Shanghai", "Beijing", "Nanjing"}; String[] states_pak = { "Select","Lahor", "Islamabaad", "Punjab"}; @Override protected
  • 如何获取下拉列表中所选值的文本? [复制](How to get the text of the selected value of a dropdown list? [duplicate])
    问题 这个问题已经在这里有了答案: 8年前关闭。 可能重复: jQuery获取特定的选项标签文本如何使用jQuery获取选择的选择选项的文本? 我有一个下拉列表,我想知道所选项目的文本。 例如: <select> <option value="1">Volvo</option> <option value="2">Saab</option> <option value="3">Mercedes</option> </select> 如果我知道所选的值,如何获得它的文本值? 例如,如果值为1 ,我如何获得Volvo ? 帮助非常感谢。 回答1 您可以使用option:selected获取select元素的option:selected选项,然后使用text()方法: $("select option:selected").text(); 这是一个例子: console.log($("select option:selected").text()); <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <select> <option value="1">Volvo</option> <option value="2" selected="selected"