【问题标题】:Help! I need a Spinner, Radio Group with Radio buttons, EditText, and setText帮助!我需要一个 Spinner、带有单选按钮、EditText 和 setText 的 Radio Group
【发布时间】:2011-04-30 19:59:56
【问题描述】:

好的,我不太擅长解释这一点,因为我是 Android 新手,所以请与我合作。 我已经尝试了我能找到的所有东西,但我不知道如何让所有东西一起工作。 我有一个 Spinner 来选择一个年龄组,一个带有单选按钮的 Radio 组,允许您选择性别(男性或女性),我有一个 EditText,我将允许输入数字和一个 Textview 到当前空白的一侧.

取决于从微调器中选择了哪个年龄组以及选择了哪个单选按钮 - 根据在 EditText 框中输入的数字,将 TextView 的 setText 设置为某个数字。

我尝试使用 OnItemSelectedListener 作为微调器,但无法找到它如何知道从数组中选择的内容。我尝试使用带有数组中项目的 if 语句的 getItemSelected

单选按钮 我试过使用 if 语句 - if (radiobutton.isChecked()) 但我不知道我是否 在此之前需要一个 ifCheckedRadio 以及如何在微调器之后使其工作

如果这一切都奏效了,我有 if (EditText.getText().equals("#")) TextView.setText("#");

这将为每个可能输入的# 复制

现在文本会在没有按钮和 OnClickListener 的情况下像这样发生变化,或者有没有办法在没有按钮的情况下做到这一点,因为最后会使用一个按钮添加多个 EditText,但我希望它在之后立即显示输入了

抱歉,如果不清楚,如果您需要更多信息,请告诉我。如果我忽略了以前使用微调器和单选按钮的问题,请告诉我,我会继续寻找,但我一直坚持这一点。

【问题讨论】:

    标签: android radio-button spinner


    【解决方案1】:

    应该这样做

        public void onItemSelected(AdapterView<?> parent,
          View view, int pos, long id) {
    
              TextView tv = (TextView) findViewById(R.id.TextView01);
              RadioGroup rg = (RadioGroup) findViewById(R.id.RadioGroup01);
              EditText et = (EditText) findViewById(R.id.EditText01);
              RadioButton rb1 = (RadioButton) findViewById(R.id.RadioButton01);
              RadioButton rb2 = (RadioButton) findViewById(R.id.RadioButton02);
              String gender = "";
              if (rb1.isChecked())
                 gender = "male";
              if (rb2.isChecked())
                 gender = "female";
              String answer;
              answer = parent.getItemAtPosition(pos).toString() + " "
              + gender + " " + et.getText(); 
              tv.setText(answer);
        }
    
    • 粗略和准备,但应该给你大致的想法 (顺便把 Radiobuttons 放在 RadioGroup 里面)

    【讨论】:

    • 我试图用不同的方式来处理它,但这可能会让事情变得更容易。唯一我不明白并且我仍在试图弄清楚的是,每次我发现一些关于微调器和 getitem 的东西时,我都不明白被选择的实际项目在哪里。答案 = parent.getItemAtPosition(pos).toString() + " " + 性别 + " " + et.getText();
    • 我试图编辑它以使其有意义,但没有时间了。 toString 和性别之后的“”是什么?
    • 该方法告诉您单击/选择了哪个项目,它位于位置'pos'。在您使用 getItemAtPosition 访问它并将其转换为字符串之前,我不会“去”任何地方。 “答案”是 Stings 的串联。 “”只是一个字符串,其中有一个空格来分隔单词。
    • 我在 RadioGroup 中有 RadioButtons,但我将按钮和文本放在 OnCreate 下而不是 OnItemSelected 下,谢谢,仅此一项就对我有所帮助。我不能使用这样的答案字符串,因为输入什么文本会有多种可能性,我不需要它来一起显示所有内容,如果在 EditText 中输入了一个数字,同时选择了某个 RadioButton 并且某个我认为必须使用 if 语句来完成的年龄组,但也许我可以将它变成一个字符串。
    • 这对我有帮助并指出了正确的方向。为了澄清“pos”将是选择的微调器的位置,并且将是一个数值,因为微调器中的项目将从上到下编号?我认为使用字符串会更容易。
    【解决方案2】:

    好的 - 重新评论您的最后一条评论,这使得从微调器和单选按钮中选择一个项目,终止输入操作。基本上我已经在按钮上添加了 onClickListeners。但是,您不能真正将 Onclick 添加到编辑文本中,因为单击通常会调出软键盘。

    package com.test.spinnerexample;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.EditText;
    import android.widget.RadioButton;
    import android.widget.Spinner;
    import android.widget.TextView;
    import android.widget.AdapterView.OnItemSelectedListener;
    
    public class SpinnerExample extends Activity {
    RadioButton rb1; RadioButton rb2; TextView tv;  EditText et;
    Spinner sp;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); 
        rb1 = (RadioButton) findViewById(R.id.RadioButton01);
        rb2 = (RadioButton) findViewById(R.id.RadioButton02);
        tv = (TextView) findViewById(R.id.OutputText);
        et = (EditText) findViewById(R.id.EditText01);
        sp = (Spinner) findViewById(R.id.Spinner01);
        ArrayAdapter<CharSequence> adapter1;
        adapter1 = ArrayAdapter.createFromResource(
                this, R.array.agegroups_array,
                android.R.layout.simple_spinner_item);
        adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        sp.setAdapter(adapter1);
        rb1.setChecked(true);
        sp.setOnItemSelectedListener(new MyOnItemSelectedListener());
        rb1.setOnClickListener(new ButtonListener());
        rb2.setOnClickListener(new ButtonListener());
    }
    private class MyOnItemSelectedListener implements OnItemSelectedListener {
    
        public void onItemSelected(AdapterView<?> parent, View view, int pos,
                long id) {
    
            RadioButton checkedButton = rb1.isChecked() ? rb1 : rb2;
            showResult(parent.getItemAtPosition(pos).toString(),
                    checkedButton.getText().toString());
        }
        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
        }
    }
    private class ButtonListener implements OnClickListener{
    
        @Override
        public void onClick(View view) {
            RadioButton rb = (RadioButton) view;
            int selectedItem = sp.getSelectedItemPosition();
            showResult(sp.getItemAtPosition(selectedItem).toString(), 
                    rb.getText().toString());
        }
    
    }
    private void showResult(String selctdSpnrText, String chkdBtnText){
        String answer = selctdSpnrText + " " + chkdBtnText + " "
        + et.getText();
        tv.setText(answer);
    }
    }
    

    【讨论】:

    • 这不是我的意思,但你肯定帮了我很多,我最终添加的是 - et.addTextChangedListener(new TextWatcher() 这样如果在 EditText 中输入了某个数字TextView 将立即更改。稍后我将发布代码。感谢您的所有帮助。
    【解决方案3】:

    // -------- 性别微调器

        ArrayAdapter<String> spnAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, items);
        spnAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    
        spnSex.setAdapter(spnAdapter);
    
        spnSex.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub
                myprofile.str_sex = items[position];
    
            }
    
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub
    
            }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-24
      • 2011-09-02
      • 2016-06-04
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多