[英]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 ...
}
我收到此錯誤:無法解析符號setOnItemSelectedListener
在MainActivity
實現OnItemSelectedListener
接口:
public class MainActivity extends ActionBarActivity
implements OnItemSelectedListener{
....
}
將setOnItemSelectedListener
添加到onCreate
方法內的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
,因為只有在為Activity設置布局后,才能使用xml中的視圖,否則應用程序將因NPE
崩潰
您可以使用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)
}
}
首先,您需要實現要使用這些方法的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);
....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.