简体   繁体   English

如何将微调器值设置为textView

[英]how to set spinner value to textView

i am new to programming please forgive for any blunder. 我是编程新手,请原谅任何错误。 i am trying to assign a spinner value which is selected to TextView but every thing goes wrong. 我正在尝试分配一个选定为TextView的微调器值,但是每件事都会出错。

OnCreate OnCreate

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    adapter=ArrayAdapter.createFromResource(this,R.array.grades, android.R.layout.simple_spinner_item);
    grades=(Spinner)findViewById(R.id.spinner);
    grades.setAdapter(adapter);
    grades.setOnItemSelectedListener(MainActivity.this);
}

onSelectesItem Listner onSelectesItem列表器

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    TextView spinner_text=(TextView) view;
    Toast.makeText(this,"your grade is " + spinner_text.getText(),Toast.LENGTH_SHORT).show();

   textView.setText(grades.getSelectedItem().toString());//this line should do its work but didnt goes well 
}

In onCreate() method, you did not get the reference of TextView using findViewById(R.id.textView) that's why in onItemSelected() when setting text to textView it causes application crash. onCreate()方法,你没有得到的参考TextView使用findViewById(R.id.textView)这就是为什么在onItemSelected()时设置texttextView它会导致应用程序崩溃。

Add below line in onCreate() onCreate()添加以下行

textView = (TextView) findViewById(R.id.YOUR_TEXTVIEW_ID);

Here is the full working code: 这是完整的工作代码:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements Spinner.OnItemSelectedListener {

    ArrayAdapter adapter;
    Spinner grades;
    TextView textView;

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

        grades = (Spinner)findViewById(R.id.spinner);
        textView = (TextView) findViewById(R.id.textView);

        adapter = ArrayAdapter.createFromResource(this, R.array.grades, android.R.layout.simple_spinner_item);

        grades.setAdapter(adapter);
        grades.setOnItemSelectedListener(MainActivity .this);
    }

    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        TextView spinner_text = (TextView) view;
        Toast.makeText(this, "Your grade is " + spinner_text.getText(), Toast.LENGTH_SHORT).show();

        textView.setText(grades.getSelectedItem().toString());
    }

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

    }
}

OUTPUT: 输出:

在此处输入图片说明

Hope this will help~ 希望这会有所帮助〜

You can get the selected spinner values in following ways: 您可以通过以下方式获得选定的微调器值:

 @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        String selectedString;
        //1: From the Adapter
        selectedString = adapter.getItem(position).toString();

        //2: From the spinner
        selectedString = grades.getSelectedItem().toString();

        //3: From the view 
        TextView spinner_text = (TextView) view;
        selectedString = spinner_text.getText().toString();

        //All of them works just fine choose any one method
        textView.setText(selectedString);
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM