Làm cách nào để chuyển giá trị mục đã chọn trong Spinner thành chuỗi?


80

Tôi có 5 Spinners. Để làm cho nó tóm tắt điều này.

Đây là Spinner trong xml

<Spinner
            android:id="@+id/text_interested"
            android:layout_span="2"
            android:layout_width="wrap_content"
            android:layout_height="60px"
            android:entries="@array/interestedarrays"
            android:prompt="@string/interestedprompt" />

Đây là Spinner trong Java

submitbtn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
interested.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                        public void onItemSelected(
                                AdapterView<?> adapterView, View view,
                                int i, long l) {
                            interesting = interested.getItemAtPosition(i).toString();
                        }

                        public void onNothingSelected(
                                AdapterView<?> adapterView) {

                        }
                    });
    }
});

Giải thích ở đây:

Trang có một nút. Nút này sẽ đọc dữ liệu từ spinner khi được nhấn. Tôi đã kiểm tra đầu ra với cái này

System.out.println(interested.getItemAtPosition(i).toString());

Nó không cho tôi điều gì, thậm chí không có giá trị.

Làm cách nào để truy xuất giá trị và xâu chuỗi nó?


Tôi chắc chắn, bạn muốn chọn mục từ một spinner bất cứ khi nào người dùng nhấp chuột vào một nút
Paresh Mayani

Đặt setOnItemSelectedListener bên ngoài onClick của nút của bạn và bên trong phương thức Onclick, sử dụng phương thức secure.getSelectedItem (). ToString ();
KK_07k11A0585,

cảm ơn, sai lầm của tôi đã đưa người nghe bên trong nút nghe rằng tại sao không phản ứng
Alan Lai

1
hoan nghênh :) khám phá bản demo api ... u có thể nhận được những ví dụ tốt hơn có
KK_07k11A0585

Câu trả lời:


221

Thử cái này:

String text = mySpinner.getSelectedItem().toString();

Như vậy, bạn có thể nhận được giá trị cho các Vòng quay khác nhau.


27
String Text = mySpinner.getSelectedItem().toString();

HOẶC LÀ

mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        Object item = parent.getItemAtPosition(position);
    }
    public void onNothingSelected(AdapterView<?> parent) {
    }
});

Nhưng làm thế nào để có được mục 0?!
Alok Rajasukumaran

11

Bạn có thể lấy mục đã chọn từ Spinner bằng cách sử dụng,

interested.getSelectedItem().toString();

7

Nếu Spinner của bạn được điền bởi con trỏ SQLite, thì giải pháp là:

Spinner mySpin = (Spinner) findViewById(R.id.myspin);
mySpin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {  
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
           SQLiteCursor item = (SQLiteCursor) parent.getItemAtPosition(position);
           String value = String.valueOf(item.getString(0));
           Toast.makeText(getApplicationContext(), "The option is:" + value , Toast.LENGTH_SHORT).show(); 
 }

PS: Trong item.getString(0)-> 0 là chỉ số của cột trên con trỏ mà bạn muốn lấy.


Hoạt động tuyệt vời. Làm cách nào để bạn sử dụng "giá trị" bên ngoài thành viên onItemSelected?
MarkT

6

thử cái này

 final Spinner cardStatusSpinner1 = (Spinner) findViewById(R.id.text_interested);
    String cardStatusString;
    cardStatusSpinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent,
                View view, int pos, long id) {
            cardStatusString = parent.getItemAtPosition(pos).toString();
        }

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

        }
    });

 final Button saveBtn = (Button) findViewById(R.id.save_button);
    saveBtn .setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            System.out.println("Selected cardStatusString : " + cardStatusString ); //this will print the result
        }
    });

6

Nhận vật phẩm đã chọn với Kotlin:

spinner.selectedItem.toString()

5

Ngoài những gợi ý,

String Text = mySpinner.getSelectedItem().toString();

Bạn có thể làm,

String Text = String.valueOf(mySpinner.getSelectedItem());

3

Khi bạn chọn bất kỳ giá trị nào từ spinner, thì bạn sẽ nhận được giá trị đã chọn,

interested.getSelectedItem().toString();

3

Tôi nghĩ bạn muốn mục đã chọn của con quay khi nút được nhấp vào ..

Hãy thử getSelectedItem () :

spinner.getSelectedItem()

2

Cách tốt nhất để làm điều này là: -

String selectedItem = spinner.getSelectedItem().toString();

bạn có thể tham khảo các tài liệu ở đây: Spinners



2

Vì ngôn ngữ mới nhất cho Phát triển Android là Kotlin. Đây là cách chúng tôi thực hiện trong Kotlin bằng cách sử dụng đối tượng Anonymous.

spinnerName?.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{
    override fun onNothingSelected(parent: AdapterView<*>?) {
       println("Nothing Selected")
    }

    override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
       val selectedString = yourList[position]
    }

}

Không ai hỏi ở đây về kotlin.
dùng3099225

1

Bằng cách triển khai SpinnerAdapter cho đối tượng bộ điều hợp của bạn mà tôi sử dụng interested.getItem(i).toString()


0
    spinnerType = (AppCompatSpinner) findViewById(R.id.account_type);
    spinnerType.setPrompt("Select Type");

    spinnerType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            TypeItem clickedItem = (TypeItem) parent.getItemAtPosition(position);
            String TypeName = clickedItem.getTypeName();
            Toast.makeText(AddAccount.this, TypeName + " selected", Toast.LENGTH_SHORT).show();
        }

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

        }
    });
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.