12
12
import android .widget .TextView ;
13
13
14
14
import androidx .annotation .NonNull ;
15
+ import androidx .core .content .ContextCompat ;
16
+ import androidx .recyclerview .widget .LinearSmoothScroller ;
15
17
import androidx .recyclerview .widget .RecyclerView ;
16
18
17
19
import java .util .ArrayList ;
@@ -25,14 +27,24 @@ public class NearbyFilterSearchRecyclerViewAdapter
25
27
26
28
private final LayoutInflater inflater ;
27
29
private Context context ;
30
+ private RecyclerView recyclerView ;
28
31
private ArrayList <Label > labels ;
29
32
private ArrayList <Label > displayedLabels ;
30
33
private ArrayList <Label > selectedLabels = new ArrayList <>();
31
34
32
- public NearbyFilterSearchRecyclerViewAdapter (Context context , ArrayList <Label > labels ) {
35
+ RecyclerView .SmoothScroller smoothScroller ;
36
+
37
+ public NearbyFilterSearchRecyclerViewAdapter (Context context , ArrayList <Label > labels , RecyclerView recyclerView ) {
33
38
this .context = context ;
34
39
this .labels = labels ;
35
40
this .displayedLabels = labels ;
41
+ this .recyclerView = recyclerView ;
42
+ smoothScroller = new
43
+ LinearSmoothScroller (context ) {
44
+ @ Override protected int getVerticalSnapPreference () {
45
+ return LinearSmoothScroller .SNAP_TO_START ;
46
+ }
47
+ };
36
48
inflater = LayoutInflater .from (context );
37
49
}
38
50
@@ -62,17 +74,24 @@ public void onBindViewHolder(@NonNull RecyclerViewHolder holder, int position) {
62
74
holder .placeTypeIcon .setImageResource (label .getIcon ());
63
75
holder .placeTypeLabel .setText (label .toString ());
64
76
65
- holder .placeTypeLayout .setBackgroundColor (label .isSelected () ? Color . BLUE : Color .WHITE );
77
+ holder .placeTypeLayout .setBackgroundColor (label .isSelected () ? ContextCompat . getColor ( context , R . color . divider_grey ) : Color .WHITE );
66
78
holder .placeTypeLayout .setOnClickListener (view -> {
67
79
if (label .isSelected ()) {
68
80
selectedLabels .remove (label );
69
81
} else {
70
82
selectedLabels .add (label );
83
+ displayedLabels .remove (label );
84
+ displayedLabels .add (selectedLabels .size ()-1 , label );
85
+ notifyDataSetChanged ();
86
+ smoothScroller .setTargetPosition (0 );
87
+ recyclerView .getLayoutManager ().startSmoothScroll (smoothScroller );
71
88
}
72
89
label .setSelected (!label .isSelected ());
73
- holder .placeTypeLayout .setBackgroundColor (label .isSelected () ? Color . BLUE : Color .WHITE );
90
+ holder .placeTypeLayout .setBackgroundColor (label .isSelected () ? ContextCompat . getColor ( context , R . color . divider_grey ) : Color .WHITE );
74
91
NearbyParentFragmentPresenter .getInstance ().filterByMarkerType (selectedLabels );
75
92
});
93
+
94
+ //TODO: recover current location marker if selection is empty
76
95
}
77
96
78
97
@ Override
@@ -125,33 +144,4 @@ protected void publishResults(CharSequence constraint, FilterResults results) {
125
144
}
126
145
};
127
146
}
128
- /*
129
- @Override
130
- public View getView(int position, View convertView, ViewGroup parent) {
131
-
132
- if (convertView == null) {
133
-
134
- convertView = inflater.inflate(R.layout.nearby_search_list_item, null);
135
-
136
- viewHolder = new RecyclerViewHolder();
137
- viewHolder.placeTypeLabel = convertView.findViewById(R.id.place_text);
138
- viewHolder.placeTypeIcon = convertView.findViewById(R.id.place_icon);
139
- convertView.setTag(viewHolder);
140
-
141
- }
142
- else{
143
- //Get viewholder we already created
144
- viewHolder = (RecyclerViewHolder)convertView.getTag();
145
- }
146
-
147
- Label label = displayedLabels.get(position);
148
- if(label != null){
149
- viewHolder.placeTypeIcon.setImageResource(label.getIcon());
150
- viewHolder.placeTypeLabel.setText(label.toString());
151
- }
152
- return convertView;
153
- }
154
-
155
- */
156
-
157
147
}
0 commit comments