处理多个事件侦听器的最佳方法

时间:2014-05-24 21:19:36

标签: android android-event

让我们说我有一个微调器(有2个项目)和一个放射性组(有2个无线电按钮)。

我想在我的布局中显示一个TextView,它将为每个选项提供不同的值:

例如我们有:

微调


RadioGroup中

正确

所以我们有4个案例:

  1. 男性真实
  2. 女性错误
  3. 男性错误
  4. 女性真实
  5. 简而言之,每次用户选择任何这些选项时,我都希望显示不同的文本视图。 我已经在旋转器和无线电按钮上放置了事件监听器:

    Spinner Listener

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View arg1,
                    int arg2, long arg3) {
                ``// TODO Auto-generated method stub
            }
    

    Radio Group Listener

    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {
                    // TODO Auto-generated method stub
                              //switch checkedId and check which spinner item is selected...
                              //then show the textview
                         }
    

    但这有时有时不起作用 - 我有很多不同的问题。 我也尝试过类似的选择。但没有任何工作正常。

    如何在没有添加额外按钮的情况下动态处理

2 个答案:

答案 0 :(得分:1)

希望这能更好地解释我的评论。

int selectedSpinnerItem = -1;
int selectedRadioGroupItem = -1;

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
        selectedSpinnerItem = position;
        updateViews();
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        selectedSpinnerItem = -1;
        updateViews();
    }
});

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        selectedRadioGroupItem = checkedId;
        updateViews();
    }
});

public void updateViews(){
    // Here is where you will compare the values 
    // and display the appropriate views.
}

答案 1 :(得分:0)

您可以创建所需的所有TextView ..

不仅仅是改变他们的可见性......

TextView v = (TextView) findViewById(R.id.text1);
v.setVisibility(View.GONE); // Or view.VISIBLE, View.INVISIBLE

因此,您可以根据逻辑查看所需的特定文本视图。 或者你可以创建2个textViews ..一个是男性/女性,一个是真/假;

我认为更好的办法就是更改一般textView中的文本..但我不确定是什么问题因为我没有代码示例可以帮助我理解

希望这会有所帮助:)