簡體   English   中英

如何獲得微調器中選定項目的值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM