From 91d306270d9d86a80cdd25db352fd74126916091 Mon Sep 17 00:00:00 2001 From: Eric House Date: Tue, 5 Jan 2021 12:21:54 -0800 Subject: [PATCH] remember which KnownPlayer entries are expanded --- .../android/xw4/KnownPlayersDelegate.java | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/xwords4/android/app/src/main/java/org/eehouse/android/xw4/KnownPlayersDelegate.java b/xwords4/android/app/src/main/java/org/eehouse/android/xw4/KnownPlayersDelegate.java index 39d23717d..be4c90ecb 100644 --- a/xwords4/android/app/src/main/java/org/eehouse/android/xw4/KnownPlayersDelegate.java +++ b/xwords4/android/app/src/main/java/org/eehouse/android/xw4/KnownPlayersDelegate.java @@ -35,6 +35,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; @@ -47,10 +48,12 @@ import org.eehouse.android.xw4.loc.LocUtils; public class KnownPlayersDelegate extends DelegateBase { private static final String TAG = KnownPlayersDelegate.class.getSimpleName(); + private static final String KEY_EXPSET = TAG + "/expset"; private Activity mActivity; private ViewGroup mList; private Map mChildren; + private HashSet mExpSet; protected KnownPlayersDelegate( Delegator delegator, Bundle sis ) { @@ -62,6 +65,7 @@ public class KnownPlayersDelegate extends DelegateBase { protected void init( Bundle sis ) { mList = (ViewGroup)findViewById( R.id.players_list ); + loadExpanded(); populateList(); } @@ -174,7 +178,7 @@ public class KnownPlayersDelegate extends DelegateBase { addInOrder(); } - private ViewGroup makePlayerElem( String player ) + private ViewGroup makePlayerElem( final String player ) { ViewGroup view = null; int lastMod[] = {0}; @@ -236,8 +240,15 @@ public class KnownPlayersDelegate extends DelegateBase { { item.findViewById(R.id.hidden_part) .setVisibility(nowExpanded?View.VISIBLE:View.GONE); + if ( nowExpanded ) { + mExpSet.add( player ); + } else { + mExpSet.remove( player ); + } + saveExpanded(); } } ); + eib.setExpanded( mExpSet.contains(player) ); item.findViewById( R.id.player_line ) .setOnClickListener( new View.OnClickListener() { @@ -273,6 +284,27 @@ public class KnownPlayersDelegate extends DelegateBase { .show(); } + private void loadExpanded() + { + HashSet expSet; + try { + expSet = (HashSet)DBUtils.getSerializableFor( mActivity, KEY_EXPSET ); + } catch ( Exception ex ) { + Log.ex( TAG, ex ); + expSet = null; + } + if ( null == expSet ) { + expSet = new HashSet<>(); + } + + mExpSet = expSet; + } + + private void saveExpanded() + { + DBUtils.setSerializableFor( mActivity, KEY_EXPSET, mExpSet ); + } + public static void launchOrAlert( Delegator delegator, DlgDelegate.HasDlgDelegate dlg ) {