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 + } +}