简体   繁体   English

将TextView文本设置为微调所选项目

[英]Set TextView Text to Spinner Selected Item

How do I set a TextView's text to a Spinner's selected text? 如何将TextView的文本设置为微调框的选定文本? Below is the relevant part of my code. 以下是我的代码的相关部分。 Right now I select an item from the Spinner, but the TextView text doesn't change. 现在,我从微调器中选择了一个项目,但TextView文本没有改变。

public void onCreate(etc, etc...
{
  Spinner spinner = (Spinner)findViewById(R.id.mySpinner);
  List<String> myList = myClass.myList();

  ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, myList);        
  adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  spinner.setAdapter(myAdapter);

  SpinnerListener(spinner);    


// Here I try to set the TextView text to the Spinner's selected text, but it doesn't work (the text doesn't change):

  TextView tv= (TextView)findViewById(R.id.myTextView);     
  tv.setText(spinner.getSelectedItem().toString()); 


}

The Spinner Listener: 微调监听器:

private void SpinnerListener(Spinner spinner)
    {
        spinner.setOnItemSelectedListener(new mySelectedListener());
    }


public class mySelectedListener implements OnItemSelectedListener {

    @Override
    public void onItemSelected(AdapterView parent, View view, int pos, long id) {

        Toast.makeText(parent.getContext(), parent.getItemAtPosition(pos).toString(), Toast.LENGTH_SHORT).show();           
    }

    @Override
    public void onNothingSelected(AdapterView parent) {             
    }

}

You should move the tv.setText(spinner.getSelectedItem().toString()); 您应该移动tv.setText(spinner.getSelectedItem().toString()); from onCreate to public void onItemSelected(...) getting something like this: tv.setText(parent.getItemAtPosition(pos).toString()) . onCreatepublic void onItemSelected(...)得到这样的东西: tv.setText(parent.getItemAtPosition(pos).toString()) See if it works ! 看看是否有效!

The problem is, if you put your code on onCreate, it is only getting called on the first time your activity/fragment is created, thus is never gonna change if the user selects a item on the spinner. 问题是,如果将代码放在onCreate上,则只会在第一次创建活动/片段时调用它,因此,如果用户在微调器上选择一个项目,则永远不会改变。

use this example 使用这个例子

public class MainActivity extends Activity {


String[] text1 = { "SUNDAY", "MONDAY", "TUESDAY",
        "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY" };
int[] val1 = { 0, 1, 2, 3, 4, 5, 6};


Spinner  spinner1;
TextView  textView1;

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

    textView1 = (TextView)findViewById(R.id.text1);
    spinner1 = (Spinner)findViewById(R.id.spinner1);
    ArrayAdapter<String> adapter1 =
            new ArrayAdapter<String>(MainActivity.this,
                    android.R.layout.simple_spinner_item, text1);
    adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner1.setAdapter(adapter1);
    spinner1.setOnItemSelectedListener(onItemSelectedListener1);
}

OnItemSelectedListener onItemSelectedListener1 =
        new OnItemSelectedListener(){

            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                                       int position, long id) {
                String s1 = String.valueOf(val1[position]);
                textView1.setText(s1);
            }

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

        };


      }

XML CODE XML代码

 <Spinner
    android:id="@+id/spinner1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />
<TextView
    android:id="@+id/text1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />


  </LinearLayout>
TextView spinget= (TextView) findViewById(R.id.spinget);

  Spinner  destspin1= (Spinner) findViewById(R.id.destspin);

destspin1.setOnItemSelectedListener(this);

 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

       String s=destspin1.getSelectedItem().toString();
        spinget.setText(s);

    }

it will work 它会工作

Set TextView Text to Spinner Selected Item 将TextView文本设置为微调所选项目

Spinner xyzSPN=(Spinner)view.findViewById(R.id.spn_xyz_spn); Spinner xyzSPN =(Spinner)view.findViewById(R.id.spn_xyz_spn); TextView xyzTV=(Spinner)view.findViewById(R.id.spn_xyz_tv); TextView xyzTV =(Spinner)view.findViewById(R.id.spn_xyz_tv);

// set listner on spinner and get selected text //在微调器上设置列表器并获取选定的文本

xyzSPN.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parentView, View selectedItemView, int position, long id) { xyzSPN.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){@Override public void onItemSelected(AdapterView parentView,View selectedItemView,int position,long id){

            xyzTV.setText(xyzSPN.getSelectedItem().toString());
        }

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

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

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