Maxouille
Maxouille

Reputation: 2911

TableLayout Visibility GONE working only on second click on button

I have a problem with a TableLayout. I'm trying to hide all its content when I click on a "Clear" button. However, it works only when I click twice on the button. I also have two radio buttons that hide or show this table layout. Strange thing is that it's working when a click on a radio button with the exact same code : setVisibility(View.GONE) and setVisibility(View.VISIBLE).

If you could help me, it would be awesome.

Here is the code :

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.dialog_task_validation);

        setTitle("Task Validation");

        // set the custom dialog components - text, image and button
        final RadioGroup radioGroupTask = (RadioGroup) findViewById(R.id.radioGroup);
        radioGroupTask.clearCheck();

        noteLayout = (TableLayout) findViewById(R.id.noteLayout);


        radioGroupTask.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
                RadioButton rb = (RadioButton) group.findViewById(checkedId);
                if (rb != null && checkedId > -1) {
                    switch (checkedId) {
                        // If task Failed
                        case R.id.taskFailedRadioButton:
                            taskCompeleted = 0;
                            noteLayout.setVisibility(View.GONE);
                            note = 0;
                            break;
                        case R.id.taskCompletedRadioButton:
                            taskCompeleted = 1;
                            noteLayout.setVisibility(View.VISIBLE);
                            break;
                    }
                }

            }
        });
        Button clear = (Button) findViewById(R.id.clearDialogButton);


        clear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                noteLayout.setVisibility(View.GONE);
                resetButtonBackground();
                note = -1;
                taskCompeleted = -1;
                radioGroupTask.clearCheck();
            }
        });
    }

And the XML :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="5dp">

    <RadioGroup
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_below="@+id/recordNameTV"
        android:id="@+id/radioGroup">

        <RadioButton
            android:id="@+id/taskFailedRadioButton"
            style="?android:attr/radioButtonStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/task_failed" />
        <RadioButton
            android:id="@+id/taskCompletedRadioButton"
            style="?android:attr/radioButtonStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/task_completed" />
    </RadioGroup>


    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/noteLayout"
        android:layout_below="@+id/radioGroup"
        android:layout_above="@+id/linearLayout"
        android:visibility="gone">

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
            <Button
                android:id="@+id/note1"
                android:text="1"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
            <Button
                android:id="@+id/note2"
                android:text="2"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
            <Button
                android:id="@+id/note3"
                android:text="3"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <Button
                android:id="@+id/note4"
                android:text="4"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
            <Button
                android:id="@+id/note5"
                android:text="5"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
            <Button
                android:id="@+id/note6"
                android:text="6"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <Button
                android:id="@+id/note7"
                android:text="7"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
            <Button
                android:id="@+id/note8"
                android:text="8"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
            <Button
                android:id="@+id/note9"
                android:text="9"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <Button
                android:id="@+id/note10"
                android:text="10"
                android:layout_weight="1"
                style="?android:attr/buttonBarButtonStyle"/>
        </TableRow>
    </TableLayout>


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_alignParentBottom="true"
            android:id="@+id/linearLayout">

            <Button
                android:id="@+id/clearDialogButton"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/clearText" />

        </LinearLayout>
</RelativeLayout>

Thanks !

Upvotes: 0

Views: 509

Answers (2)

Pier Giorgio Misley
Pier Giorgio Misley

Reputation: 5351

Just to help other people I'm going to report here my comment:

Remove the clearCheck call in the button click listener (or move it before changing the visibility) because it triggers the onCheckedChange listener of your radioGroupTask, and this will change your layout again.

Upvotes: 2

Vrushali Raut
Vrushali Raut

Reputation: 1188

clearCheck() - Clears the selection. So first You need to Clear the selection. first and then need to Hide TableLayout.

Upvotes: 1

Related Questions