循环复选框并获取Android中的文本

时间:2016-10-05 21:57:05

标签: java android

我正在尝试制作简单的复选框,当选中复选框时,我想显示带有复选框文本的祝酒词。

这是我尝试但不能正常工作的代码

 nextscreen.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                RelativeLayout layout = (RelativeLayout)findViewById(R.id.DSP);
                for (int i = 0; i < layout.getChildCount(); i++) {
                    v = layout.getChildAt(i);
                    if (v instanceof CheckBox) {
                        if (((CheckBox) v).isChecked()){
                            String text = String.valueOf(((CheckBox) v).getText());

                            Log.d("@@@@@@@@@" , "somethinng" +text);

                    }

                    }

                }
            }
        });

这是我的布局。

<RelativeLayout
    android:layout_below="@+id/customer_email_addnew_edittext"
    android:layout_width="match_parent"
    android:id="@+id/DSP"
    android:layout_height="match_parent">

    <android.support.v7.widget.AppCompatCheckBox
        android:id="@+id/toi"
        android:layout_width="match_parent"
        android:layout_margin="5dp"
        android:layout_height="wrap_content"
        android:text="Times of India"
        android:background="@drawable/customborder"/>

    <android.support.v7.widget.AppCompatCheckBox
        android:id="@+id/danikjagran"
        android:layout_width="match_parent"
        android:layout_below="@+id/toi"
        android:layout_margin="5dp"
        android:layout_height="wrap_content"
        android:text="Times of India"
        android:background="@drawable/customborder"/>

    <android.support.v7.widget.AppCompatCheckBox
        android:id="@+id/htimes"
        android:layout_width="match_parent"
        android:layout_below="@+id/danikjagran"
        android:layout_margin="5dp"
        android:layout_height="wrap_content"
        android:text="Times of India"
        android:background="@drawable/customborder"/>

    <Button
        android:id="@+id/conntinue"
        android:text="continue"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"/>
</RelativeLayout>

有没有办法可以遍历所有选中的复选框并获取文本。

1 个答案:

答案 0 :(得分:1)

您提供的代码并未显示Toast,而是写入日志。

试试这个:

if (((CheckBox) v).isChecked()) {
    String text = String.valueOf(((CheckBox) v).getText());
    Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
}

<强>更新

这样您每次都不必迭代子视图:

public class YourActivity extends Activity {

    private android.support.v7.widget.AppCompatCheckBox mToi;
    private android.support.v7.widget.AppCompatCheckBox mDanikjagran;
    private android.support.v7.widget.AppCompatCheckBox mHtimes;

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

        mToi = (android.support.v7.widget.AppCompatCheckBox) findViewById(R.id.toi);
        mDanikjagran = (android.support.v7.widget.AppCompatCheckBox) findViewById(R.id.danikjagran);
        mHtimes = (android.support.v7.widget.AppCompatCheckBox) findViewById(R.id.htimes);

        // ...

        nextscreen.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mToi.isChecked()) {
                    Toast.makeText(this, mToi.getText(), Toast.LENGTH_SHORT).show();
                }
                if (mDanikjagran.isChecked()) {
                    Toast.makeText(this, mDanikjagran.getText(), Toast.LENGTH_SHORT).show();
                }
                if (mHtimes.isChecked()) {
                    Toast.makeText(this, mHtimes.getText(), Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}