androidexpandablelistviewandroid-themeandroid-darkmodeandroid-night-mode

Android ExpandableListView not changing to light text in night mode


I am creating an ExpandableListView and its adapter (ExpandableListAdapter, using a SimpleExpandableListAdapter) by doing something like this. It works fine in light mode, but the text remains black in dark mode / night mode, while the rest of my application is styled correctly:

    ExpandableListAdapter adapter = new SimpleExpandableListAdapter(
                activity.getApplicationContext(), 
                groupData, groupLayout, groupFrom, groupTo,
                childData, childLayout, childFrom, childTo);
    ExpandableListView expandableListView = view.findViewById(R.id.my_expandable_list_view);
    expandableListView.setAdapter(adapter);

Solution

  • Instead of passing in activity.getApplicationContext() as the context argument when creating the SimpleExpandableListAdapter, pass in the activity directly. The theme on the application context appears to be wrong:

        ExpandableListAdapter adapter = new SimpleExpandableListAdapter(
                    activity /* instead of activity.getApplicationContext() */, 
                    groupData, groupLayout, groupFrom, groupTo,
                    childData, childLayout, childFrom, childTo);
    

    Though others recommend using a RecyclerView instead of a ListView/ExpandableListView.

    Credit to this reddit post by u/TheCrazyRed.