diff --git a/go/quickstep/res/layout/task_item_view.xml b/go/quickstep/res/layout/task_item_view.xml
new file mode 100644
index 0000000000..90940c4951
--- /dev/null
+++ b/go/quickstep/res/layout/task_item_view.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
diff --git a/go/quickstep/src/com/android/quickstep/TaskAdapter.java b/go/quickstep/src/com/android/quickstep/TaskAdapter.java
index 57cd60a992..d3fd24026c 100644
--- a/go/quickstep/src/com/android/quickstep/TaskAdapter.java
+++ b/go/quickstep/src/com/android/quickstep/TaskAdapter.java
@@ -15,16 +15,17 @@
*/
package com.android.quickstep;
+import android.view.LayoutInflater;
import android.view.ViewGroup;
-import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView.Adapter;
+import com.android.launcher3.R;
+import com.android.quickstep.views.TaskItemView;
import com.android.systemui.shared.recents.model.Task;
import java.util.ArrayList;
-
/**
* Recycler view adapter that dynamically inflates and binds {@link TaskHolder} instances with the
* appropriate {@link Task} from the recents task list.
@@ -42,8 +43,9 @@ public final class TaskAdapter extends Adapter {
@Override
public TaskHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// TODO: Swap in an actual task view here (view w/ icon, label, etc.)
- TextView stubView = new TextView(parent.getContext());
- return new TaskHolder(stubView);
+ TaskItemView itemView = (TaskItemView) LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.task_item_view, parent, false);
+ return new TaskHolder(itemView);
}
@Override
diff --git a/go/quickstep/src/com/android/quickstep/TaskHolder.java b/go/quickstep/src/com/android/quickstep/TaskHolder.java
index 1ea6d7610f..47398c876e 100644
--- a/go/quickstep/src/com/android/quickstep/TaskHolder.java
+++ b/go/quickstep/src/com/android/quickstep/TaskHolder.java
@@ -15,10 +15,9 @@
*/
package com.android.quickstep;
-import android.widget.TextView;
-
import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+import com.android.quickstep.views.TaskItemView;
import com.android.systemui.shared.recents.model.Task;
/**
@@ -27,22 +26,21 @@ import com.android.systemui.shared.recents.model.Task;
*/
final class TaskHolder extends ViewHolder {
- // TODO: Implement the actual task view to be held.
- // For now, we just use a simple text view.
- private final TextView mStubView;
+ private final TaskItemView mTaskItemView;
- public TaskHolder(TextView stubView) {
- super(stubView);
- mStubView = stubView;
+ public TaskHolder(TaskItemView itemView) {
+ super(itemView);
+ mTaskItemView = itemView;
}
/**
* Bind task content to the view. This includes the task icon and title as well as binding
* input handlers such as which task to launch/remove.
*
- * @param task the task to bind to the view this
+ * @param task the task to bind to the view
*/
public void bindTask(Task task) {
- mStubView.setText("Stub task view: " + task.titleDescription);
+ mTaskItemView.setLabel(task.titleDescription);
+ mTaskItemView.setIcon(task.icon);
}
}
diff --git a/go/quickstep/src/com/android/quickstep/views/TaskItemView.java b/go/quickstep/src/com/android/quickstep/views/TaskItemView.java
new file mode 100644
index 0000000000..ce3947d240
--- /dev/null
+++ b/go/quickstep/src/com/android/quickstep/views/TaskItemView.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.quickstep.views;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.android.launcher3.R;
+
+/**
+ * View representing an individual task item with the icon + thumbnail adjacent to the task label.
+ */
+public final class TaskItemView extends LinearLayout {
+
+ private TextView mLabelView;
+ private ImageView mIconView;
+
+ public TaskItemView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ mLabelView = findViewById(R.id.task_label);
+ mIconView = findViewById(R.id.task_icon_and_thumbnail);
+ }
+
+ /**
+ * Set the label for the task item.
+ *
+ * @param label task label
+ */
+ public void setLabel(String label) {
+ mLabelView.setText(label);
+ }
+
+ /**
+ * Set the icon for the task item.
+ *
+ * @param icon task icon
+ */
+ public void setIcon(Drawable icon) {
+ mIconView.setImageDrawable(icon);
+ // TODO: Add in combination drawable for icon + thumbnail
+ }
+}