diff --git a/app/src/leanback/AndroidManifest.xml b/app/src/leanback/AndroidManifest.xml
index 5625c82e6..61650fe9c 100644
--- a/app/src/leanback/AndroidManifest.xml
+++ b/app/src/leanback/AndroidManifest.xml
@@ -17,6 +17,14 @@
+
+
+
+
+
+
+
+
@@ -28,6 +36,19 @@
android:name="design_height_in_dp"
android:value="540" />
+
+
+
+
+
+
+
+
{
+
+ private final OnClickListener mListener;
+ private final List mItems;
+ private int[] size;
+
+ public AppAdapter(OnClickListener listener) {
+ this.mItems = new ArrayList<>();
+ this.mListener = listener;
+ setSize();
+ }
+
+ public interface OnClickListener {
+
+ void onItemClick(Info item);
+
+ boolean onLongClick(Info item);
+ }
+
+ private void setSize() {
+ int column = 5;
+ int space = ResUtil.dp2px(48) + ResUtil.dp2px(16 * (column - 1));
+ this.size = Product.getSpec(space, column, Style.rect());
+ }
+
+ public void add(Info item) {
+ if (item.getPack().equals(App.get().getPackageName())) {
+ mItems.add(0, item);
+ notifyItemInserted(0);
+ } else {
+ mItems.add(item);
+ notifyItemInserted(mItems.size() - 1);
+ }
+ }
+
+ @Override
+ public int getItemCount() {
+ return mItems.size();
+ }
+
+ @NonNull
+ @Override
+ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ return new ViewHolder(AdapterAppBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)).size(size);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
+ Info item = mItems.get(position);
+ holder.binding.name.setText(item.getName());
+ holder.binding.icon.setImageDrawable(item.getIcon());
+ holder.binding.getRoot().setOnClickListener(v -> mListener.onItemClick(item));
+ holder.binding.getRoot().setOnLongClickListener(v -> mListener.onLongClick(item));
+ }
+
+ public static class ViewHolder extends RecyclerView.ViewHolder {
+
+ private final AdapterAppBinding binding;
+
+ public ViewHolder(@NonNull AdapterAppBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+
+ public ViewHolder size(int[] size) {
+ binding.getRoot().getLayoutParams().width = size[0];
+ return this;
+ }
+ }
+}
diff --git a/app/src/leanback/res/layout/activity_launcher.xml b/app/src/leanback/res/layout/activity_launcher.xml
new file mode 100644
index 000000000..65fe69515
--- /dev/null
+++ b/app/src/leanback/res/layout/activity_launcher.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/leanback/res/layout/adapter_app.xml b/app/src/leanback/res/layout/adapter_app.xml
new file mode 100644
index 000000000..36bb3e700
--- /dev/null
+++ b/app/src/leanback/res/layout/adapter_app.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
\ No newline at end of file