Reputation: 2911
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
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
Reputation: 1188
clearCheck() - Clears the selection. So first You need to Clear the selection. first and then need to Hide TableLayout.
Upvotes: 1