Skip to content
This repository was archived by the owner on Nov 4, 2023. It is now read-only.

Commit 3b243bf

Browse files
committed
Indicate selected jotting
* Implement ExpandableJottingsListAdapter#indicateSelection() and #highlightItem() - change color of selected jotting - clear backgrounds when x is clicked v2.2.0
1 parent 6925af5 commit 3b243bf

4 files changed

Lines changed: 54 additions & 26 deletions

File tree

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ android {
88
applicationId "com.boruminc.borumjot.android"
99
minSdkVersion 16
1010
targetSdkVersion 29
11-
versionCode 47
12-
versionName "2.1.1"
11+
versionCode 48
12+
versionName "2.2.0"
1313

1414
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1515
}

app/src/main/java/com/boruminc/borumjot/android/ExpandableJottingsListAdapter.java

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,18 @@
55
import android.content.Intent;
66
import android.graphics.Color;
77
import android.graphics.Typeface;
8+
import android.graphics.drawable.Drawable;
89
import android.os.Build;
910
import android.os.Bundle;
1011
import android.util.Log;
1112
import android.view.LayoutInflater;
13+
import android.view.MotionEvent;
1214
import android.view.View;
1315
import android.view.ViewGroup;
16+
import android.view.ViewParent;
1417
import android.widget.BaseExpandableListAdapter;
18+
import android.widget.ExpandableListView;
19+
import android.widget.ListView;
1520
import android.widget.TextView;
1621
import android.widget.Toast;
1722

@@ -23,13 +28,13 @@
2328
import com.boruminc.borumjot.Note;
2429
import com.boruminc.borumjot.Task;
2530
import com.boruminc.borumjot.android.customviews.SerializableImage;
31+
import com.google.android.flexbox.FlexboxLayout;
2632

2733
import java.io.Serializable;
2834
import java.util.ArrayList;
2935
import java.util.HashMap;
3036
import java.util.List;
3137
import java.util.Objects;
32-
import java.util.function.Predicate;
3338

3439
@RequiresApi(api = Build.VERSION_CODES.N)
3540
public class ExpandableJottingsListAdapter extends BaseExpandableListAdapter {
@@ -71,27 +76,6 @@ void setSharedData(ArrayList<Jotting> sharedJottings) {
7176
this.allJottingsLists.replace("shared", sharedJottings);
7277
}
7378

74-
public ExpandableJottingsListAdapter.GroupTitleViewHolder onCreateDividerViewHolder(ViewGroup parent) {
75-
// Create a new view
76-
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_group, parent, false);
77-
return new GroupTitleViewHolder(v, context);
78-
}
79-
80-
public ExpandableJottingsListAdapter.ChildViewHolder onCreateChildViewHolder(ViewGroup parent) {
81-
// Create a new view
82-
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.jotting_list_item, parent, false);
83-
return new ChildViewHolder(v, context);
84-
}
85-
86-
/*
87-
* Replace the contents of a view (invoked by the layout manager)
88-
* Get element from the dataset at this position
89-
* Replace the contents of the view with that element
90-
*/
91-
public void onBindViewHolder(ExpandableListViewHolder holder, String key, int position) {
92-
holder.bindView(Objects.requireNonNull(allJottingsLists.get(key)).get(position));
93-
}
94-
9579
@Override
9680
public int getGroupCount() {
9781
return this.jottingsListTitles.size();
@@ -200,7 +184,6 @@ void bindView(Object data) {
200184
}
201185
}
202186

203-
// DONE ChildViewHolder
204187
static class ChildViewHolder extends ExpandableListViewHolder implements View.OnLongClickListener {
205188
private TextView textView;
206189
private SerializableImage pinIcon;
@@ -271,6 +254,8 @@ public boolean onLongClick(View v) {
271254
// Make visible and set data to jotting options toolbar
272255
temporaryAppBar.setVisibility(View.VISIBLE);
273256

257+
indicateSelection(v, currentActivity);
258+
274259
Bundle bundle = new Bundle();
275260
bundle.putSerializable("data", (Serializable) v.getTag());
276261
bundle.putSerializable("view", pinIcon);
@@ -282,5 +267,30 @@ public boolean onLongClick(View v) {
282267

283268
return true;
284269
}
270+
271+
private void indicateSelection(View v, Activity currentActivity) {
272+
if (v instanceof FlexboxLayout) { // The row was long clicked
273+
highlightItem((ViewGroup) v, currentActivity);
274+
} else if (v.getParent() instanceof FlexboxLayout) { // One of the children was long clicked
275+
highlightItem(v.getParent(), currentActivity);
276+
}
277+
}
278+
279+
private void highlightItem(ViewParent listItemRoot, Activity currentActivity) {
280+
int backgroundForSelectedView = currentActivity.getResources().getColor(R.color.cherryRasboraBackgroundSurface);
281+
Drawable defaultBackground = currentActivity.getResources().getDrawable(
282+
R.drawable.orange_border,
283+
currentActivity.getTheme()
284+
);
285+
286+
ViewGroup listView = (ViewGroup) listItemRoot.getParent();
287+
288+
for (int i = 0; i < listView.getChildCount(); i++) {
289+
if (listView.getChildAt(i) instanceof FlexboxLayout)
290+
listView.getChildAt(i).setBackground(defaultBackground);
291+
}
292+
293+
((View) listItemRoot).setBackgroundColor(backgroundForSelectedView);
294+
}
285295
}
286296
}

app/src/main/java/com/boruminc/borumjot/android/HomeActivity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import android.view.MenuInflater;
1212
import android.view.MenuItem;
1313
import android.view.View;
14+
import android.view.ViewGroup;
1415
import android.widget.Button;
1516
import android.widget.ExpandableListView;
1617
import android.widget.ProgressBar;

app/src/main/java/com/boruminc/borumjot/android/JottingOptionsFragment.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33
import android.app.AlertDialog;
44
import android.content.Context;
55
import android.content.Intent;
6+
import android.os.Build;
67
import android.os.Bundle;
8+
import android.util.Log;
79
import android.view.LayoutInflater;
810
import android.view.Menu;
911
import android.view.MenuInflater;
1012
import android.view.MenuItem;
13+
import android.view.MotionEvent;
1114
import android.view.View;
1215
import android.view.ViewGroup;
1316
import android.widget.Toast;
@@ -29,6 +32,8 @@
2932
import org.json.JSONException;
3033
import org.json.JSONObject;
3134

35+
import java.util.Objects;
36+
3237
public class JottingOptionsFragment extends Fragment {
3338
private View root;
3439
private String userApiKey;
@@ -96,7 +101,19 @@ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
96101
root.setVisibility(View.GONE);
97102
normalToolbar.setVisibility(View.VISIBLE);
98103
}
99-
break;
104+
105+
View pin = (SerializableImage) requireArguments().getSerializable("view");
106+
107+
assert pin != null;
108+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
109+
((View) pin.getParent()).setBackground(
110+
getResources().getDrawable(
111+
R.drawable.orange_border,
112+
Objects.requireNonNull(getActivity()).getTheme()
113+
)
114+
);
115+
}
116+
break;
100117
}
101118
return super.onOptionsItemSelected(item);
102119
}

0 commit comments

Comments
 (0)