Files
lawnchair/src/com/android/launcher3/widget/WidgetListRowEntry.java
Hyunyoung Song 8e5464b544 Remove flicker when multiple apps are added/removed/updated on widget tray
Bug: 36718342

1.The flicker was also happening partially because notifyWidgetProviderChanged
callback also made the entire widget list to update in addition to
packageManager update.

2. Now that adapter calls notifyItemInserted, Removed, the recycler
view uses it's internal animation to elegantly move items or insert
them. (added benefit!)

3. Added tests for WidgetsListAdapterTest

$ adb shell am instrument -w -e class com.android.launcher3.widget.WidgetsListAdapterTest com.google.android.apps.nexuslauncher.tests/android.support.test.runner.AndroidJUnitRunner

com.android.launcher3.widget.WidgetsListAdapterTest:.

Time: 0.337

OK (6 test)

Change-Id: I0818d546532631bf889fae560118decff64ec5a4
Signed-off-by: Hyunyoung Song <hyunyoungs@google.com>
2017-08-23 18:04:37 -07:00

49 lines
1.5 KiB
Java

/*
* Copyright (C) 2016 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.launcher3.widget;
import com.android.launcher3.ItemInfo;
import com.android.launcher3.model.PackageItemInfo;
import com.android.launcher3.model.WidgetItem;
import java.util.ArrayList;
/**
* Holder class to store all the information related to a single row in the widget list
*/
public class WidgetListRowEntry {
public final PackageItemInfo pkgItem;
public final ArrayList<WidgetItem> widgets;
/**
* Character that is used as a section name for the {@link ItemInfo#title}.
* (e.g., "G" will be stored if title is "Google")
*/
public String titleSectionName;
public WidgetListRowEntry(PackageItemInfo pkgItem, ArrayList<WidgetItem> items) {
this.pkgItem = pkgItem;
this.widgets = items;
}
@Override
public String toString() {
return pkgItem.packageName + ":" + widgets.size();
}
}