394

Làm thế nào để lấy văn bản của mục đã chọn trong spinner?

Tôi phải lấy văn bản trên mục đã chọn trong vòng quay của mình khi tôi nhấp vào nút lưu. tôi cần văn bản chứ không phải Chỉ mục.

|
821
Spinner spinner = (Spinner)findViewById(R.id.spinner);
String text = spinner.getSelectedItem().toString();
|
  • 1
    đã đăng câu hỏi của tôi ở đây stackoverflow.com/questions/5818850/... –  15:46:29 29/04/2011
  • 1
    Tôi đã sử dụng mã và kết quả không phải là những gì tôi cần trên chế độ gỡ lỗi. Tôi thấy nó mang lại cho tôi một giá trị như {sup Lũy = VITA}. nhưng tôi chỉ cần giá trị "VITA" bất kỳ ý tưởng? –  21:07:12 01/03/2012
  • 1
    Chà! Đó là một giải pháp dễ dàng! Tuyệt quá! –  06:38:11 23/04/2013
  • 1
    Tôi đã thử điều này, nhưng tôi không nhận được văn bản thực tế. Tôi nhận được một chuỗi đại diện cho một đối tượng con trỏ: android.database.sqlite.SQLiteCursor@410dfae8có thể là do tôi đã sử dụng bộ điều hợp con trỏ. Bất kỳ ý tưởng nào tôi nên làm gì để có được chuỗi phù hợp? –  19:21:19 27/11/2014
  • 1
    có, giá trị trả về phụ thuộc vào loại bộ điều hợp. Bộ điều hợp của bạn phải có cơ sở con trỏ để nó sẽ trả về con trỏ. thử gõ nó vào con trỏ và sau đó truy xuất giá trị của bạn từ con trỏ. –  18:12:40 28/11/2014
39
TextView textView = (TextView)mySpinner.getSelectedView();
String result = textView.getText().toString();
|
34

Bạn phải sử dụng chỉ mục và Bộ điều hợp để tìm ra văn bản bạn có

Xem ví dụ này về Spinner

public class MyOnItemSelectedListener implements OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent,
        View view, int pos, long id) {
      Toast.makeText(parent.getContext()), "The planet is " +
          parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
    }

    public void onNothingSelected(AdapterView parent) {
      // Do nothing.
    }
}
|
15

Spinner trả về cho bạn giá trị số nguyên cho mảng. Bạn phải truy xuất giá trị chuỗi dựa trên chỉ mục.

Spinner MySpinner = (Spinner)findViewById(R.id.spinner);
Integer indexValue = MySpinner.getSelectedItemPosition();
|
14

dùng cái này

import java.util.ArrayList;   
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

public class dynamic_spinner_main extends Activity {

    private Spinner m_myDynamicSpinner;
    private EditText m_addItemText;
    private ArrayAdapter<CharSequence> m_adapterForSpinner;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_spinner);

        ///////////////////////////////////////////////////////////////
        //grab our UI elements so we can manipulate them (in the case of the Spinner)
        //    or add listeners to them (in the case of the buttons)
        m_myDynamicSpinner = (Spinner)findViewById(R.id.dynamicSpinner);        
        m_addItemText = (EditText)findViewById(R.id.newSpinnerItemText);
        Button addButton = (Button)findViewById(R.id.AddBtn);
        Button clearButton = (Button)findViewById(R.id.ClearBtn);

        ////////////////////////////////////////////////////////////////
        //create an arrayAdapter an assign it to the spinner
        m_adapterForSpinner = new ArrayAdapter(this, android.R.layout.simple_spinner_item);
        m_adapterForSpinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);        
        m_myDynamicSpinner.setAdapter(m_adapterForSpinner);
        m_adapterForSpinner.add("gr");        
        m_myDynamicSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
                // your code here
                Intent mIntent=new Intent(dynamic_spinner_main.this,sampleLocalization.class);
                mIntent.putExtra("lang", m_myDynamicSpinner.getItemIdAtPosition(position));
                System.out.println("Spinner value...."+m_myDynamicSpinner.getSelectedItem().toString());
                startActivity(mIntent);
            }

            @Override
            public void onNothingSelected(AdapterView<?> parentView) {
                // your code here
            }

        });
        ////////////////////////////////////////////////////////////////
        //add listener for addButton
        addButton.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {               
                addNewSpinnerItem();
            }                   
        });

        ////////////////////////////////////////////////////////////////
        //add listener for addButton
        clearButton.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                clearSpinnerItems();
            }           
        });  
    }

    private void addNewSpinnerItem() {
        CharSequence textHolder = "" + m_addItemText.getText();
        m_adapterForSpinner.add(textHolder);
    }

    private void clearSpinnerItems() {
        m_adapterForSpinner.clear();
        m_adapterForSpinner.add("dummy item");
    }       
}

main_spinner.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <EditText android:layout_height="wrap_content" 
            android:layout_margin="4px" 
            android:id="@+id/newSpinnerItemText" 
            android:layout_width="fill_parent"></EditText>
    <Button android:layout_height="wrap_content" 
            android:id="@+id/AddBtn" 
            android:layout_margin="4px" 
            android:layout_width="fill_parent" 
            android:text="Add To Spinner"></Button>
    <Button android:layout_height="wrap_content" 
            android:id="@+id/ClearBtn" 
            android:layout_margin="4px" 
            android:layout_width="fill_parent" 
            android:text="Clear Spinner Items"></Button>
    <Spinner android:layout_height="wrap_content" 
            android:id="@+id/dynamicSpinner" 
            android:layout_margin="4px" 
            android:layout_width="fill_parent"></Spinner>
</LinearLayout>
|
11
spinner_button.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?>arg0, View view, int arg2, long arg3) {

            String selected_val=spinner_button.getSelectedItem().toString();

            Toast.makeText(getApplicationContext(), selected_val ,
                    Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });

}
|
9

Phiên bản một dòng:

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

CẬP NHẬT: Bạn có thể xóa truyền nếu bạn sử dụng SDK 26 (hoặc mới hơn) để biên dịch dự án của mình.

String text = findViewById(R.id.spinner).getSelectedItem().toString();
|
8

Sau khi đặt bộ điều hợp spinner, mã này sẽ giúp

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            Toast.makeText(getApplicationContext(), "This is " +
                    adapterView.getItemAtPosition(i).toString(), Toast.LENGTH_LONG).show();

            try {
                //Your task here
            }catch (Exception e)
            {
                e.printStackTrace();
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });
|
7
TextView textView = (TextView) spinActSubTask.getSelectedView().findViewById(R.id.tvProduct);

String subItem = textView.getText().toString();
|
3

Nó cũng có thể đạt được theo cách an toàn hơn một chút bằng cách sử dụng String.valueOf()như vậy

Spinner sp = (Spinner) findViewById(R.id.sp_id);
String selectedText = String.valueOf(sp.getSelectedItem());

mà không bị rơi ứng dụng khi tất cả các địa ngục bị hỏng. Lý do đằng sau sự an toàn của nó là có khả năng xử lý nullcác đối tượng như một đối số. Tài liệu cho biết

nếu đối số là null, thì một chuỗi bằng "null"; nếu không, giá trị của obj.toString()được trả về.

Vì vậy, một số bảo hiểm ở đó trong trường hợp có sản phẩm nào Spinner , chẳng hạn như mục hiện đang được chọn phải được chuyển đổi sang String.

|
3

Đối với các trình quay dựa trên CursorAdapter:

  • lấy id mặt hàng đã chọn: spinner.getSelectedItemId()
  • tìm nạp tên mục từ cơ sở dữ liệu của bạn, ví dụ:

    public String getCountryName(int pId){
        Cursor cur = mDb.query(TABLE, new String[]{COL_NAME}, COL_ID+"=?", new String[]{pId+""}, null, null, null);
        String ret = null;
        if(cur.moveToFirst()){
            ret = cur.getString(0);
        }
        cur.close();
        return ret;
    }
    
|
1

Đối với những người có spinner dựa trên HashMap :

((HashMap)((Spinner)findViewById(R.id.YourSpinnerId)).getSelectedItem()).values().toArray()[0].toString();

Nếu bạn đang ở trong một Fragment, một Bộ điều hợp hoặc một Lớp khác với các hoạt động chính, hãy sử dụng cái này:

((HashMap)((Spinner)YourInflatedLayoutOrView.findViewById(R.id.YourSpinnerId)).getSelectedItem()).values().toArray()[0].toString();

Nó chỉ để hướng dẫn; bạn nên tìm id chế độ xem của mình trước phương thức onClick.

|
0
Spinner spinner = (Spinner) findViewById(R.id.yourspinnerid);
String text = spinner.getSelectedItem().toString();
|
  • 1
    Điều này có thể giải quyết tốt vấn đề, nhưng vui lòng cung cấp lời giải thích. Nhiều người dùng mới tìm đến SO và giải thích về mã của bạn sẽ giúp họ học cách điều chỉnh mã để giải quyết vấn đề của họ. –  12:18:41 27/12/2015

Câu trả lời của bạn (> 20 ký tự)

Bằng cách click "Đăng trả lời", bạn đồng ý với Điều khoản dịch vụ, Chính sách bảo mật and Chính sách cookie của chúng tôi.

Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ hoặc hỏi câu hỏi của bạn.