Skip to content

Commit e889bc2

Browse files
paulfthomashunterstich
authored andcommitted
[MaterialCard] Allow selection using keyboard
PiperOrigin-RevId: 776751854
1 parent 3e5c1a8 commit e889bc2

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

catalog/java/io/material/catalog/card/SelectableCardsAdapter.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import io.material.catalog.R;
2020

2121
import androidx.recyclerview.widget.RecyclerView;
22+
import android.view.KeyEvent;
2223
import android.view.LayoutInflater;
2324
import android.view.MotionEvent;
2425
import android.view.View;
@@ -98,6 +99,25 @@ private void bind(Item item, int position) {
9899
subtitleView.setText(item.subtitle);
99100
if (selectionTracker != null) {
100101
bindSelectedState();
102+
materialCardView.setOnKeyListener(
103+
(v, keyCode, event) -> {
104+
if (event.getAction() == KeyEvent.ACTION_DOWN
105+
&& (keyCode == KeyEvent.KEYCODE_ENTER
106+
|| keyCode == KeyEvent.KEYCODE_DPAD_CENTER)) {
107+
Long selectionKey = details.getSelectionKey();
108+
if (selectionKey != null) {
109+
if (selectionTracker.isSelected(selectionKey)) {
110+
selectionTracker.deselect(selectionKey);
111+
} else {
112+
selectionTracker.select(selectionKey);
113+
}
114+
return true;
115+
}
116+
}
117+
return false;
118+
});
119+
} else {
120+
materialCardView.setOnKeyListener(null);
101121
}
102122
}
103123

@@ -187,8 +207,7 @@ static class Details extends ItemDetailsLookup.ItemDetails<Long> {
187207

188208
long position;
189209

190-
Details() {
191-
}
210+
Details() {}
192211

193212
@Override
194213
public int getPosition() {

0 commit comments

Comments
 (0)