@quicktvui/ai 1.0.7 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/package.json +1 -1
  2. package/rules/.clinerules +27 -4
  3. package/rules/.cursorrules +27 -4
  4. package/rules/.github/copilot-instructions.md +27 -4
  5. package/rules/.source/hippy/extend_views/CoverFlowHorizontalView.java +203 -0
  6. package/rules/.source/hippy/extend_views/CoverFlowVerticalView.java +203 -0
  7. package/rules/.source/hippy/extend_views/CoverFlowViewController.java +195 -0
  8. package/rules/.source/hippy/extend_views/EngineRootView.java +125 -0
  9. package/rules/.source/hippy/extend_views/ExtendTag.java +83 -0
  10. package/rules/.source/hippy/extend_views/FocusSearchHelper.java +124 -0
  11. package/rules/.source/hippy/extend_views/IRecyclerItemView.java +12 -0
  12. package/rules/.source/hippy/extend_views/JSEventHandleView.java +5 -0
  13. package/rules/.source/hippy/extend_views/MarqueeRelayManager.java +133 -0
  14. package/rules/.source/hippy/extend_views/MarqueeRelayTextView.java +211 -0
  15. package/rules/.source/hippy/extend_views/ProgressBarView.java +83 -0
  16. package/rules/.source/hippy/extend_views/ProgressBarViewController.java +145 -0
  17. package/rules/.source/hippy/extend_views/SeekBarView.java +104 -0
  18. package/rules/.source/hippy/extend_views/SeekBarViewController.java +218 -0
  19. package/rules/.source/hippy/extend_views/StateImageView.java +149 -0
  20. package/rules/.source/hippy/extend_views/StateImageViewController.java +34 -0
  21. package/rules/.source/hippy/extend_views/TVButtonView.java +314 -0
  22. package/rules/.source/hippy/extend_views/TVButtonViewController.java +89 -0
  23. package/rules/.source/hippy/extend_views/TVTextView.java +684 -0
  24. package/rules/.source/hippy/extend_views/TVViewActor.java +811 -0
  25. package/rules/.source/hippy/extend_views/TVViewActorHost.java +6 -0
  26. package/rules/.source/hippy/extend_views/TVViewActor/346/216/245/345/205/245.md +66 -0
  27. package/rules/.source/hippy/extend_views/TemplateUtil.java +336 -0
  28. package/rules/.source/hippy/extend_views/TextButtonNode.java +47 -0
  29. package/rules/.source/hippy/extend_views/TextViewController.java +377 -0
  30. package/rules/.source/hippy/extend_views/fastlist/CenterFlyInAnimator.java +96 -0
  31. package/rules/.source/hippy/extend_views/fastlist/ChildOnScreenScroller.java +548 -0
  32. package/rules/.source/hippy/extend_views/fastlist/ClonedViewTag.java +17 -0
  33. package/rules/.source/hippy/extend_views/fastlist/EventDeliverer.java +55 -0
  34. package/rules/.source/hippy/extend_views/fastlist/FastAdapter.java +4683 -0
  35. package/rules/.source/hippy/extend_views/fastlist/FastAdapterUtil.java +982 -0
  36. package/rules/.source/hippy/extend_views/fastlist/FastFlexNode.java +48 -0
  37. package/rules/.source/hippy/extend_views/fastlist/FastFlexView.java +873 -0
  38. package/rules/.source/hippy/extend_views/fastlist/FastFlexViewController.java +130 -0
  39. package/rules/.source/hippy/extend_views/fastlist/FastItemNode.java +67 -0
  40. package/rules/.source/hippy/extend_views/fastlist/FastItemView.java +306 -0
  41. package/rules/.source/hippy/extend_views/fastlist/FastItemViewController.java +106 -0
  42. package/rules/.source/hippy/extend_views/fastlist/FastListModule.java +95 -0
  43. package/rules/.source/hippy/extend_views/fastlist/FastListNode.java +90 -0
  44. package/rules/.source/hippy/extend_views/fastlist/FastListView.java +2466 -0
  45. package/rules/.source/hippy/extend_views/fastlist/FastListViewController.java +1038 -0
  46. package/rules/.source/hippy/extend_views/fastlist/FastListView/346/270/262/346/237/223/346/265/201/347/250/213/345/233/276.graffle +0 -0
  47. package/rules/.source/hippy/extend_views/fastlist/FastPendingView.java +47 -0
  48. package/rules/.source/hippy/extend_views/fastlist/ItemDecorations.java +71 -0
  49. package/rules/.source/hippy/extend_views/fastlist/ItemStoreNode.java +64 -0
  50. package/rules/.source/hippy/extend_views/fastlist/ItemStoreView.java +13 -0
  51. package/rules/.source/hippy/extend_views/fastlist/ItemStoreViewController.java +45 -0
  52. package/rules/.source/hippy/extend_views/fastlist/ListItemHolder.java +7 -0
  53. package/rules/.source/hippy/extend_views/fastlist/ListViewControlProp.java +41 -0
  54. package/rules/.source/hippy/extend_views/fastlist/MouseRecycleView.java +509 -0
  55. package/rules/.source/hippy/extend_views/fastlist/OnFastItemClickListener.java +12 -0
  56. package/rules/.source/hippy/extend_views/fastlist/OnFastItemFocusChangeListener.java +9 -0
  57. package/rules/.source/hippy/extend_views/fastlist/OnFastScrollStateChangedListener.java +7 -0
  58. package/rules/.source/hippy/extend_views/fastlist/PendingListNode.java +18 -0
  59. package/rules/.source/hippy/extend_views/fastlist/PendingViewController.java +13 -0
  60. package/rules/.source/hippy/extend_views/fastlist/PostHandlerView.java +6 -0
  61. package/rules/.source/hippy/extend_views/fastlist/PostTaskHolder.java +20 -0
  62. package/rules/.source/hippy/extend_views/fastlist/ReplaceChildController.java +105 -0
  63. package/rules/.source/hippy/extend_views/fastlist/ReplaceChildView.java +312 -0
  64. package/rules/.source/hippy/extend_views/fastlist/TVListView.java +3692 -0
  65. package/rules/.source/hippy/extend_views/fastlist/TemplateCodeParser.java +247 -0
  66. package/rules/.source/hippy/extend_views/fastlist/Utils.java +572 -0
  67. package/rules/.source/hippy/extend_views/fastlist/ViewTag.java +317 -0
  68. package/rules/.source/hippy/extend_views/fastlist/VirtualListView.java +8 -0
  69. package/rules/.source/hippy/extend_views/fastlist/diff/FastListDataBindingHelper.java +320 -0
  70. package/rules/.source/hippy/extend_views/fastlist/diff/KeyDiffHelper.java +289 -0
  71. package/rules/.source/hippy/extend_views/fastlist/diff/NoKeyDiffHelper.java +278 -0
  72. package/rules/.source/hippy/extend_views/tag/FontTag.java +53 -0
  73. package/rules/.source/hippy/extend_views/tag/HtmlTag.java +191 -0
  74. package/rules/.source/hippy/extend_views/tag/HtmlTagHandler.java +185 -0
  75. package/rules/.source/hippy/extend_views/tag/SpanTag.java +160 -0
  76. package/rules/.source/hippy/extend_views/tag/TextFontSpan.java +102 -0
  77. package/rules/.source/hippy/extend_views/waterfall/Chunk.java +10 -0
  78. package/rules/.source/hippy/extend_views/waterfall/ChunkGroup.java +5 -0
  79. package/rules/.source/hippy/extend_views/waterfall/Section.java +4 -0
  80. package/rules/.source/hippy/extend_views/waterfall/Tabs.java +5 -0
  81. package/rules/.source/hippy/extend_views/waterfall/WaterfallUtils.java +26 -0
  82. package/rules/.source/hippy/hippy_uimanager/ControllerHolder.java +30 -0
  83. package/rules/.source/hippy/hippy_uimanager/ControllerManager.java +651 -0
  84. package/rules/.source/hippy/hippy_uimanager/ControllerRegistry.java +102 -0
  85. package/rules/.source/hippy/hippy_uimanager/ControllerUpdateManger.java +252 -0
  86. package/rules/.source/hippy/hippy_uimanager/CustomControllerHelper.java +425 -0
  87. package/rules/.source/hippy/hippy_uimanager/DiffUtils.java +526 -0
  88. package/rules/.source/hippy/hippy_uimanager/ExtendViewGroup.java +36 -0
  89. package/rules/.source/hippy/hippy_uimanager/HippyCustomViewCreator.java +29 -0
  90. package/rules/.source/hippy/hippy_uimanager/HippyGroupController.java +83 -0
  91. package/rules/.source/hippy/hippy_uimanager/HippyViewBase.java +27 -0
  92. package/rules/.source/hippy/hippy_uimanager/HippyViewController.java +2189 -0
  93. package/rules/.source/hippy/hippy_uimanager/HippyViewEvent.java +52 -0
  94. package/rules/.source/hippy/hippy_uimanager/IHippyZIndexViewGroup.java +24 -0
  95. package/rules/.source/hippy/hippy_uimanager/InternalExtendViewUtil.java +395 -0
  96. package/rules/.source/hippy/hippy_uimanager/ListItemRenderNode.java +143 -0
  97. package/rules/.source/hippy/hippy_uimanager/ListViewRenderNode.java +44 -0
  98. package/rules/.source/hippy/hippy_uimanager/MatrixUtil.java +470 -0
  99. package/rules/.source/hippy/hippy_uimanager/NativeGestureDispatcher.java +349 -0
  100. package/rules/.source/hippy/hippy_uimanager/NativeGestureProcessor.java +188 -0
  101. package/rules/.source/hippy/hippy_uimanager/PullFooterRenderNode.java +43 -0
  102. package/rules/.source/hippy/hippy_uimanager/PullHeaderRenderNode.java +43 -0
  103. package/rules/.source/hippy/hippy_uimanager/RenderManager.java +304 -0
  104. package/rules/.source/hippy/hippy_uimanager/RenderNode.java +533 -0
  105. package/rules/.source/hippy/hippy_uimanager/StateView.java +17 -0
  106. package/rules/.source/hippy/hippy_uimanager/TransformUtil.java +125 -0
  107. package/rules/.source/hippy/hippy_uimanager/ViewGroupDrawingOrderHelper.java +108 -0
  108. package/rules/.source/hippy/hippy_uimanager/ViewStateProvider.java +10 -0
  109. package/rules/.source/hippy/hippy_views/audioview/AudioPlayManager.java +457 -0
  110. package/rules/.source/hippy/hippy_views/audioview/AudioView.java +225 -0
  111. package/rules/.source/hippy/hippy_views/audioview/AudioViewController.java +135 -0
  112. package/rules/.source/hippy/hippy_views/common/CommonBackgroundDrawable.java +58 -0
  113. package/rules/.source/hippy/hippy_views/common/CommonBorder.java +37 -0
  114. package/rules/.source/hippy/hippy_views/custom/HippyCustomPropsController.java +61 -0
  115. package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerListAdapter.java +399 -0
  116. package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerView.java +378 -0
  117. package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerViewController.java +187 -0
  118. package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerViewHolder.java +39 -0
  119. package/rules/.source/hippy/hippy_views/hippylist/HippyRecyclerViewWrapper.java +134 -0
  120. package/rules/.source/hippy/hippy_views/hippylist/NodePositionHelper.java +55 -0
  121. package/rules/.source/hippy/hippy_views/hippylist/PreloadHelper.java +54 -0
  122. package/rules/.source/hippy/hippy_views/hippylist/PullFooterEventHelper.java +61 -0
  123. package/rules/.source/hippy/hippy_views/hippylist/PullHeaderEventHelper.java +127 -0
  124. package/rules/.source/hippy/hippy_views/hippylist/RecyclerViewEventHelper.java +394 -0
  125. package/rules/.source/hippy/hippy_views/image/HippyContentDrawable.java +113 -0
  126. package/rules/.source/hippy/hippy_views/image/HippyImageView.java +1608 -0
  127. package/rules/.source/hippy/hippy_views/image/HippyImageViewController.java +382 -0
  128. package/rules/.source/hippy/hippy_views/image/IImageStateListener.java +7 -0
  129. package/rules/.source/hippy/hippy_views/list/ChildOnScreenScroller.java +255 -0
  130. package/rules/.source/hippy/hippy_views/list/HippyListAdapter.java +647 -0
  131. package/rules/.source/hippy/hippy_views/list/HippyListItemView.java +162 -0
  132. package/rules/.source/hippy/hippy_views/list/HippyListItemViewController.java +45 -0
  133. package/rules/.source/hippy/hippy_views/list/HippyListView.java +915 -0
  134. package/rules/.source/hippy/hippy_views/list/HippyListViewController.java +622 -0
  135. package/rules/.source/hippy/hippy_views/list/HippyRecycler.java +31 -0
  136. package/rules/.source/hippy/hippy_views/list/IRecycleItemTypeChange.java +23 -0
  137. package/rules/.source/hippy/hippy_views/list/ItemDecorations.java +70 -0
  138. package/rules/.source/hippy/hippy_views/list/NegativeLongKeyFlinger.java +156 -0
  139. package/rules/.source/hippy/hippy_views/list/NodeHolder.java +34 -0
  140. package/rules/.source/hippy/hippy_views/list/RecycleViewFlinger.java +126 -0
  141. package/rules/.source/hippy/hippy_views/list/TVRecyclerView.java +2070 -0
  142. package/rules/.source/hippy/hippy_views/list/TVSingleLineListView.java +15 -0
  143. package/rules/.source/hippy/hippy_views/modal/HippyModalHostManager.java +102 -0
  144. package/rules/.source/hippy/hippy_views/modal/HippyModalHostView.java +597 -0
  145. package/rules/.source/hippy/hippy_views/modal/ModalHostHelper.java +46 -0
  146. package/rules/.source/hippy/hippy_views/modal/ModalStyleNode.java +34 -0
  147. package/rules/.source/hippy/hippy_views/modal/RequestCloseEvent.java +32 -0
  148. package/rules/.source/hippy/hippy_views/modal/ShowEvent.java +31 -0
  149. package/rules/.source/hippy/hippy_views/navigator/Navigator.java +126 -0
  150. package/rules/.source/hippy/hippy_views/navigator/NavigatorController.java +120 -0
  151. package/rules/.source/hippy/hippy_views/refresh/HippyPullFooterView.java +47 -0
  152. package/rules/.source/hippy/hippy_views/refresh/HippyPullFooterViewController.java +65 -0
  153. package/rules/.source/hippy/hippy_views/refresh/HippyPullHeaderView.java +39 -0
  154. package/rules/.source/hippy/hippy_views/refresh/HippyPullHeaderViewController.java +104 -0
  155. package/rules/.source/hippy/hippy_views/refresh/RefreshWrapper.java +237 -0
  156. package/rules/.source/hippy/hippy_views/refresh/RefreshWrapperController.java +62 -0
  157. package/rules/.source/hippy/hippy_views/refresh/RefreshWrapperItemController.java +39 -0
  158. package/rules/.source/hippy/hippy_views/refresh/RefreshWrapperItemView.java +26 -0
  159. package/rules/.source/hippy/hippy_views/scroll/HippyHorizontalScrollView.java +500 -0
  160. package/rules/.source/hippy/hippy_views/scroll/HippyOnScrollHelper.java +39 -0
  161. package/rules/.source/hippy/hippy_views/scroll/HippyScrollView.java +46 -0
  162. package/rules/.source/hippy/hippy_views/scroll/HippyScrollViewController.java +178 -0
  163. package/rules/.source/hippy/hippy_views/scroll/HippyScrollViewEventHelper.java +92 -0
  164. package/rules/.source/hippy/hippy_views/scroll/HippyVerticalScrollView.java +522 -0
  165. package/rules/.source/hippy/hippy_views/text/HippyTextView.java +512 -0
  166. package/rules/.source/hippy/hippy_views/text/HippyTextViewController.java +77 -0
  167. package/rules/.source/hippy/hippy_views/textinput/HippyTextInput.java +668 -0
  168. package/rules/.source/hippy/hippy_views/textinput/HippyTextInputController.java +528 -0
  169. package/rules/.source/hippy/hippy_views/textinput/TextInputNode.java +115 -0
  170. package/rules/.source/hippy/hippy_views/videoview/APEZProvider.java +287 -0
  171. package/rules/.source/hippy/hippy_views/videoview/APKExpansionSupport.java +82 -0
  172. package/rules/.source/hippy/hippy_views/videoview/PivotPoint.java +13 -0
  173. package/rules/.source/hippy/hippy_views/videoview/ScalableType.java +34 -0
  174. package/rules/.source/hippy/hippy_views/videoview/ScalableVideoView.java +265 -0
  175. package/rules/.source/hippy/hippy_views/videoview/ScaleManager.java +191 -0
  176. package/rules/.source/hippy/hippy_views/videoview/Size.java +19 -0
  177. package/rules/.source/hippy/hippy_views/videoview/VideoHippyView.java +917 -0
  178. package/rules/.source/hippy/hippy_views/videoview/VideoHippyViewController.java +236 -0
  179. package/rules/.source/hippy/hippy_views/videoview/ZipResourceFile.java +427 -0
  180. package/rules/.source/hippy/hippy_views/view/CardRootView.java +28 -0
  181. package/rules/.source/hippy/hippy_views/view/CustomLayoutView.java +10 -0
  182. package/rules/.source/hippy/hippy_views/view/CustomNodeView.java +5 -0
  183. package/rules/.source/hippy/hippy_views/view/DialogViewGroup.java +113 -0
  184. package/rules/.source/hippy/hippy_views/view/HippyViewGroup.java +2042 -0
  185. package/rules/.source/hippy/hippy_views/view/HippyViewGroupController.java +583 -0
  186. package/rules/.source/hippy/hippy_views/view/WindowRoot.java +5 -0
  187. package/rules/.source/hippy/hippy_views/viewpager/HippyViewPager.java +308 -0
  188. package/rules/.source/hippy/hippy_views/viewpager/HippyViewPagerAdapter.java +148 -0
  189. package/rules/.source/hippy/hippy_views/viewpager/HippyViewPagerController.java +246 -0
  190. package/rules/.source/hippy/hippy_views/viewpager/HippyViewPagerItem.java +27 -0
  191. package/rules/.source/hippy/hippy_views/viewpager/HippyViewPagerItemController.java +42 -0
  192. package/rules/.source/hippy/hippy_views/viewpager/ViewPagerPageChangeListener.java +114 -0
  193. package/rules/.source/hippy/hippy_views/viewpager/event/HippyPageItemExposureEvent.java +40 -0
  194. package/rules/.source/hippy/hippy_views/viewpager/event/HippyPageScrollEvent.java +43 -0
  195. package/rules/.source/hippy/hippy_views/viewpager/event/HippyPageScrollStateChangedEvent.java +42 -0
  196. package/rules/.source/hippy/hippy_views/viewpager/event/HippyPageSelectedEvent.java +42 -0
  197. package/rules/.source/hippy/hippy_views/webview/HippyWebView.java +160 -0
  198. package/rules/.source/hippy/hippy_views/webview/HippyWebViewBridge.java +20 -0
  199. package/rules/.source/hippy/hippy_views/webview/HippyWebViewController.java +103 -0
  200. package/rules/.source/hippy/hippy_views/webview/HippyWebViewInner.java +77 -0
  201. package/rules/.windsurfrules +27 -4
  202. package/rules/AGENTS.md +27 -4
  203. package/rules/CLAUDE.md +27 -3
  204. package/rules/GEMINI.md +25 -3
@@ -0,0 +1,622 @@
1
+ /* Tencent is pleased to support the open source community by making Hippy available.
2
+ * Copyright (C) 2018 THL A29 Limited, a Tencent company. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ package com.tencent.mtt.hippy.views.list;
17
+
18
+ import com.tencent.mtt.hippy.FocusDispatchView;
19
+ import com.tencent.mtt.hippy.HippyRootView;
20
+ import com.tencent.mtt.hippy.annotation.HippyController;
21
+ import com.tencent.mtt.hippy.annotation.HippyControllerProps;
22
+ import com.tencent.mtt.hippy.common.HippyArray;
23
+ import com.tencent.mtt.hippy.common.HippyMap;
24
+ import com.tencent.mtt.hippy.dom.node.NodeProps;
25
+ import com.tencent.mtt.hippy.modules.Promise;
26
+ import com.tencent.mtt.hippy.uimanager.ControllerManager;
27
+ import com.tencent.mtt.hippy.uimanager.HippyViewController;
28
+ import com.tencent.mtt.hippy.uimanager.InternalExtendViewUtil;
29
+ import com.tencent.mtt.hippy.uimanager.ListViewRenderNode;
30
+ import com.tencent.mtt.hippy.uimanager.RenderNode;
31
+ import com.tencent.mtt.hippy.utils.ExtendUtil;
32
+ import com.tencent.mtt.hippy.utils.LogUtils;
33
+ import com.tencent.mtt.hippy.utils.PixelUtil;
34
+ import com.tencent.mtt.supportui.views.recyclerview.BaseLayoutManager;
35
+ import com.tencent.mtt.supportui.views.recyclerview.RecyclerViewBase;
36
+ import com.tencent.mtt.supportui.views.recyclerview.RecyclerViewItem;
37
+
38
+ import android.content.Context;
39
+ import android.graphics.Rect;
40
+ import android.util.Log;
41
+ import android.view.View;
42
+ import android.view.ViewGroup;
43
+
44
+ @SuppressWarnings({"deprecation", "unused"})
45
+ @HippyController(name = HippyListViewController.CLASS_NAME)
46
+ public class HippyListViewController extends HippyViewController<HippyListView> {
47
+
48
+
49
+
50
+
51
+ public static final String CLASS_NAME = "ListView";
52
+
53
+ @Override
54
+ public void onViewDestroy(HippyListView hippyListView) {
55
+ super.onViewDestroy(hippyListView);
56
+ if (hippyListView != null && hippyListView.mListScrollListeners != null) {
57
+ hippyListView.mListScrollListeners.clear();
58
+ }
59
+ }
60
+
61
+ @Override
62
+ protected void addView(ViewGroup parentView, View view, int index) {
63
+ // super.addView(parentView, view, index);
64
+ }
65
+
66
+ @Override
67
+ protected void deleteChild(ViewGroup parentView, View childView, int childIndex) {
68
+ // List的childView是RecyclerViewItem类型,不是由Hippy构建的,所以这里需要提前删除RecyclerViewItem的child
69
+ if (childView instanceof RecyclerViewItem) {
70
+ ((RecyclerViewItem) childView).removeAllViews();
71
+ }
72
+ // list里,删掉某个条目后,它后面的条目的位置都要减1
73
+ if (childIndex >= 0 && parentView instanceof HippyListView) {
74
+ HippyListView listView = (HippyListView) parentView;
75
+ listView.getRecycler().updateHolderPositionWhenDelete(childIndex);
76
+ }
77
+ }
78
+
79
+ @Override
80
+ public int getChildCount(HippyListView viewGroup) {
81
+ return ((HippyListAdapter) viewGroup.getAdapter()).getRecyclerItemCount();
82
+ }
83
+
84
+ @Override
85
+ public View getChildAt(HippyListView viewGroup, int i) {
86
+ return ((HippyListAdapter) viewGroup.getAdapter()).getRecyclerItemView(i);
87
+ }
88
+
89
+ @Override
90
+ public void onBatchComplete(HippyListView view) {
91
+ super.onBatchComplete(view);
92
+ if(LogUtils.isDebug()) {
93
+ Log.i(TVRecyclerView.TAG, "onBatchComplete called setListData list:" + ExtendUtil.debugViewLite(view));
94
+ }
95
+ view.setListData();
96
+ }
97
+
98
+ @Override
99
+ protected View createViewImpl(Context context) {
100
+ return new HippyListView(context, BaseLayoutManager.VERTICAL);
101
+ }
102
+
103
+ @Override
104
+ protected View createViewImpl(Context context, HippyMap iniProps)
105
+ {
106
+
107
+ if (iniProps != null && iniProps.containsKey("horizontal"))
108
+ {
109
+
110
+ final TVRecyclerView r = new TVRecyclerView(context, BaseLayoutManager.HORIZONTAL);
111
+ if(iniProps.containsKey("disableAdvancedFocusSearch")){
112
+ r.setUseAdvancedFocusSearch(false);
113
+ }
114
+ return r;
115
+ }
116
+ else
117
+ {
118
+ final TVRecyclerView r = new TVRecyclerView(context, BaseLayoutManager.VERTICAL);
119
+ if(iniProps.containsKey("disableAdvancedFocusSearch")){
120
+ r.setUseAdvancedFocusSearch(false);
121
+ }
122
+ return r;
123
+ }
124
+ }
125
+
126
+ @Override
127
+ protected void onCreateViewByCache(View view, String type, HippyMap props) {
128
+ super.onCreateViewByCache(view, type, props);
129
+ if (view instanceof TVRecyclerView)
130
+ {
131
+ if(props.containsKey("disableAdvancedFocusSearch")){
132
+ ((TVRecyclerView) view).setUseAdvancedFocusSearch(false);
133
+ }
134
+ }
135
+
136
+ }
137
+
138
+ @Override
139
+ public RenderNode createRenderNode(int id, HippyMap props, String className,
140
+ HippyRootView hippyRootView, ControllerManager controllerManager,
141
+ boolean lazy) {
142
+ return new ListViewRenderNode(id, props, className, hippyRootView, controllerManager, lazy);
143
+ }
144
+
145
+ @HippyControllerProps(name = "rowShouldSticky")
146
+ public void setRowShouldSticky(HippyListView view, boolean enable) {
147
+ view.setHasSuspentedItem(enable);
148
+ }
149
+
150
+ @HippyControllerProps(name = "onScrollBeginDrag", defaultType = HippyControllerProps.BOOLEAN)
151
+ public void setScrollBeginDragEventEnable(HippyListView view, boolean flag) {
152
+ view.setScrollBeginDragEventEnable(flag);
153
+ }
154
+
155
+ @HippyControllerProps(name = "onScrollEndDrag", defaultType = HippyControllerProps.BOOLEAN)
156
+ public void setScrollEndDragEventEnable(HippyListView view, boolean flag) {
157
+ view.setScrollEndDragEventEnable(flag);
158
+ }
159
+
160
+ @HippyControllerProps(name = "forceBlockFocusOnFail", defaultType = HippyControllerProps.BOOLEAN, defaultBoolean = true)
161
+ public void setForceBlockFocusOnFail(HippyListView view, boolean enable) {
162
+ if (view instanceof TVRecyclerView) {
163
+ ((TVRecyclerView) view).setForceBlockFocusOnFail(enable);
164
+ }
165
+ }
166
+
167
+ @HippyControllerProps(name = "onMomentumScrollBegin", defaultType = HippyControllerProps.BOOLEAN)
168
+ public void setMomentumScrollBeginEventEnable(HippyListView view, boolean flag) {
169
+ view.setMomentumScrollBeginEventEnable(flag);
170
+ }
171
+
172
+ @HippyControllerProps(name = "onMomentumScrollEnd", defaultType = HippyControllerProps.BOOLEAN)
173
+ public void setMomentumScrollEndEventEnable(HippyListView view, boolean flag) {
174
+ view.setMomentumScrollEndEventEnable(flag);
175
+ }
176
+
177
+ @HippyControllerProps(name = "onScrollEnable", defaultType = HippyControllerProps.BOOLEAN)
178
+ public void setOnScrollEventEnable(HippyListView view, boolean flag) {
179
+ view.setOnScrollEventEnable(flag);
180
+ }
181
+
182
+ @HippyControllerProps(name = "exposureEventEnabled", defaultType = HippyControllerProps.BOOLEAN)
183
+ public void setExposureEventEnable(HippyListView view, boolean flag) {
184
+ view.setExposureEventEnable(flag);
185
+ }
186
+
187
+ @HippyControllerProps(name = "scrollEnabled", defaultType = HippyControllerProps.BOOLEAN, defaultBoolean = true)
188
+ public void setScrollEnable(HippyListView view, boolean flag) {
189
+ view.setScrollEnable(flag);
190
+ }
191
+
192
+ @HippyControllerProps(name = "scrollEventThrottle", defaultType = HippyControllerProps.NUMBER, defaultNumber = 30.0D)
193
+ public void setscrollEventThrottle(HippyListView view, int scrollEventThrottle) {
194
+ view.setScrollEventThrottle(scrollEventThrottle);
195
+ }
196
+
197
+ @HippyControllerProps(name = "scrollOffset", defaultType = HippyControllerProps.NUMBER)
198
+ public void setScrollOffset(HippyListView view, int scrollOffset) {
199
+ if(view instanceof TVRecyclerView) {
200
+ ((TVRecyclerView) view).setScrollOffset(scrollOffset);
201
+ }
202
+ }
203
+
204
+ @HippyControllerProps(name = "enableScrollOffsetEvent", defaultType = HippyControllerProps.BOOLEAN, defaultBoolean = false)
205
+ public void setEnableScrollOffsetEvent(HippyListView view,boolean mEnableScrollOffsetEvent) {
206
+ if(view instanceof TVRecyclerView){
207
+ ((TVRecyclerView) view).setEnableScrollOffsetEvent(mEnableScrollOffsetEvent);
208
+ }
209
+ }
210
+
211
+ @HippyControllerProps(name = "preloadItemNumber")
212
+ public void setPreloadItemNumber(HippyListView view, int preloadItemNumber) {
213
+ RecyclerViewBase.Adapter<?> adapter = view.getAdapter();
214
+ if (adapter instanceof HippyListAdapter) {
215
+ ((HippyListAdapter) adapter).setPreloadItemNumber(preloadItemNumber);
216
+ }
217
+ }
218
+
219
+ @HippyControllerProps(name = "overScrollEnabled", defaultType = HippyControllerProps.BOOLEAN, defaultBoolean = true)
220
+ public void setOverScrollEnabled(HippyListView view, boolean flag) {
221
+ view.setOverScrollEnabled(flag);
222
+ }
223
+
224
+ @HippyControllerProps(name = "initialContentOffset", defaultType = HippyControllerProps.NUMBER, defaultNumber = 0)
225
+ public void setInitialContentOffset(HippyListView view, int offset) {
226
+ view.setInitialContentOffset((int)PixelUtil.dp2px(offset));
227
+ }
228
+
229
+ @HippyControllerProps(name = "listenBoundEvent",defaultType = HippyControllerProps.BOOLEAN,defaultBoolean = false)
230
+ public void setListenBoundEvent(HippyListView view, boolean enable)
231
+ {
232
+ if(view instanceof TVRecyclerView){
233
+ ((TVRecyclerView) view).setListenBoundEvent(enable);
234
+ }
235
+ }
236
+
237
+ @HippyControllerProps(name = "setUseNegativeLayout",defaultType = HippyControllerProps.BOOLEAN,defaultBoolean = false)
238
+ public void setUseNegativeLayout(HippyListView view, boolean enable)
239
+ {
240
+ if(view instanceof TVRecyclerView){
241
+ ((TVRecyclerView) view).setUseNegativeLayout(enable);
242
+ }
243
+ }
244
+
245
+ //触底回弹
246
+ @HippyControllerProps(name = "endHintEnabled", defaultType = HippyControllerProps.BOOLEAN, defaultBoolean = true)
247
+ public void setShakeEndEnable(HippyListView view, boolean enable)
248
+ {
249
+ if(view instanceof TVRecyclerView) {
250
+ ((TVRecyclerView) view).setShakeEndEnable(enable);
251
+ }
252
+ }
253
+
254
+ //焦点抖动
255
+ @HippyControllerProps(name = "endShakeEnabled", defaultType = HippyControllerProps.BOOLEAN, defaultBoolean = true)
256
+ public void setListShakeEnable(HippyListView view, boolean enable)
257
+ {
258
+ if(view instanceof TVRecyclerView) {
259
+ ((TVRecyclerView) view).setListShakeSelf(enable);
260
+ }
261
+ }
262
+
263
+ @HippyControllerProps(name = "preload")
264
+ public void setPreload(HippyListView view, int preloadItemNumber)
265
+ {
266
+ RecyclerViewBase.Adapter adapter = view.getAdapter();
267
+ if (adapter instanceof HippyListAdapter)
268
+ {
269
+ ((HippyListAdapter)adapter).setPreloadItemNumber(preloadItemNumber);
270
+ }
271
+ }
272
+
273
+ @HippyControllerProps(name = "layoutTargetPosition",defaultType = HippyControllerProps.NUMBER,defaultNumber = -1)
274
+ public void setLayoutTriggerTargetPosition(HippyListView view ,int position){
275
+ if(view instanceof TVRecyclerView){
276
+ ((TVRecyclerView) view).setLayoutTriggerTargetPosition(position);
277
+ }
278
+ }
279
+
280
+ @Override
281
+ public void dispatchFunction(HippyListView view, String functionName, HippyArray params, Promise promise) {
282
+ super.dispatchFunction(view, functionName, params, promise);
283
+ if ("getScrollOffset".equals(functionName)) {
284
+ final HippyMap map = new HippyMap();
285
+ map.pushInt("x",view.getOffsetX());
286
+ map.pushInt("y",view.getOffsetY());
287
+ promise.resolve(map);
288
+ }
289
+ }
290
+
291
+ @Override
292
+ public void dispatchFunction(HippyListView view, String functionName, HippyArray dataArray)
293
+ {
294
+ super.dispatchFunction(view, functionName, dataArray);
295
+ switch (functionName)
296
+ {
297
+ case "scrollToIndex":
298
+ {
299
+ // list滑动到某个item
300
+ int xIndex = dataArray.getInt(0);
301
+ int yIndex = dataArray.getInt(1);
302
+ boolean animated = dataArray.getBoolean(2);
303
+ int duration = dataArray.getInt(3); //1.2.7 增加滚动时间 ms,animated==true时生效
304
+ int offset = dataArray.getInt(4);
305
+ view.scrollToIndex(xIndex, yIndex, animated,duration,offset);
306
+ break;
307
+ }
308
+ case "setInitPosition" :
309
+
310
+ if(view instanceof TVRecyclerView){
311
+ final HippyMap map = dataArray.getMap(0);
312
+ Log.d("PendingFocus","call setInitPosition view:"+view+",map:"+map);
313
+ ((TVRecyclerView) view).setInitPositionInfo(map);
314
+ }
315
+ break;
316
+ case "clearInitPosition" :
317
+ if(view instanceof TVRecyclerView){
318
+ final HippyMap map = dataArray.getMap(0);
319
+ ((TVRecyclerView) view).clearInitFocusPosition();
320
+ }
321
+ break;
322
+ case "scrollToContentOffset":
323
+ {
324
+ // list滑动到某个距离
325
+ double xOffset = dataArray.getDouble(0);
326
+ double yOffset = dataArray.getDouble(1);
327
+ boolean animated = dataArray.getBoolean(2);
328
+ int duration = dataArray.getInt(3); //1.2.7 增加滚动时间 ms,animated==true时生效
329
+ view.scrollToContentOffset(xOffset, yOffset, animated,duration);
330
+ break;
331
+ }
332
+ case "scrollToTop":
333
+ {
334
+ view.scrollToTop(null);
335
+ break;
336
+ }
337
+ case "setSelectChildPosition":
338
+ int position = dataArray.getInt(0);
339
+ if(view instanceof TVRecyclerView){
340
+ boolean changeFocusTarget = true;
341
+ if(dataArray.size() > 1){
342
+ changeFocusTarget = dataArray.getBoolean(1);
343
+ }
344
+ ((TVRecyclerView) view).setSelectChildPosition(position,changeFocusTarget);
345
+ }
346
+ break;
347
+ case "setTargetFocusChildPosition":
348
+ int pos = dataArray.getInt(0);
349
+ if(view instanceof TVRecyclerView){
350
+ ((TVRecyclerView) view).setTargetFocusChildPosition(pos);
351
+ }
352
+ break;
353
+ case "requestChildFocus":
354
+ if(LogUtils.isDebug()) {
355
+ LogUtils.e(FocusDispatchView.TAG, "requestChildFocus view:" + view.getId());
356
+ }
357
+ int p = dataArray.getInt(0);
358
+ if(view instanceof TVRecyclerView){
359
+ final View v = view.findViewByPosition(p);
360
+ if(v != null){
361
+ v.requestFocus();
362
+ }
363
+ }
364
+ break;
365
+
366
+ case "refreshListData":
367
+ LogUtils.d("hippy","refreshListData called by :"+view.getId());
368
+ view.setListData();
369
+ break;
370
+ }
371
+ }
372
+
373
+ /*** zhaopeng add 20201117 **/
374
+ @HippyControllerProps(name = "focusMemory", defaultType = HippyControllerProps.BOOLEAN, defaultBoolean = true)
375
+ public void setFocusMemory(HippyListView view, boolean enable)
376
+ {
377
+ if(view instanceof TVRecyclerView){
378
+ ((TVRecyclerView) view).enableFocusMemory(enable);
379
+ }
380
+ }
381
+
382
+ @HippyControllerProps(name = NodeProps.CLIP_BOUNDS_OUTSET_RECT, defaultType = HippyControllerProps.MAP)
383
+ public void setClipRectOutset(HippyListView view, HippyMap hippyMap){
384
+ if(view instanceof TVRecyclerView){
385
+ ((TVRecyclerView) view).setClipOutset(hippyMap.getInt("left"),hippyMap.getInt("top"),hippyMap.getInt("right") ,hippyMap.getInt("bottom"));
386
+ }
387
+ }
388
+
389
+ @HippyControllerProps(name = NodeProps.CLIP_BOUNDS_OUTSET, defaultType = HippyControllerProps.NUMBER,defaultNumber = 0)
390
+ public void setClipRectOutsetAll(HippyListView view, int outSet){
391
+ if(view instanceof TVRecyclerView){
392
+ ((TVRecyclerView) view).setClipOutset(outSet,outSet,outSet,outSet);
393
+ }
394
+ }
395
+
396
+ @HippyControllerProps(name = "loadMoreState", defaultType = HippyControllerProps.STRING,defaultString = "idle")
397
+ public void setLoadMoreState(HippyListView view, String state){
398
+ // view.setLoadMoreState(state);
399
+ }
400
+
401
+
402
+
403
+
404
+
405
+ @HippyControllerProps(name = NodeProps.LIST_VIEW_OVER_SCROLL_LENGTH_START, defaultType = HippyControllerProps.NUMBER,defaultNumber = 0)
406
+ public void setOverScrollStart(HippyListView view, int length){
407
+ if(mOverScrollDecoration == null){
408
+ mOverScrollDecoration = new OverScrollDecoration();
409
+ view.addItemDecoration(mOverScrollDecoration);
410
+ }
411
+ mOverScrollDecoration.start = length;
412
+ view.requestLayout();
413
+
414
+ }
415
+
416
+ @HippyControllerProps(name = NodeProps.LIST_VIEW_OVER_SCROLL_LENGTH_END, defaultType = HippyControllerProps.NUMBER,defaultNumber = 0)
417
+ public void setOverScrollEnd(HippyListView view, int length){
418
+ if(mOverScrollDecoration == null){
419
+ mOverScrollDecoration = new OverScrollDecoration();
420
+ view.addItemDecoration(mOverScrollDecoration);
421
+ }
422
+ mOverScrollDecoration.end = length;
423
+
424
+ view.requestLayout();
425
+
426
+ }
427
+
428
+ @HippyControllerProps(name = "setSelectChildPosition", defaultType = HippyControllerProps.NUMBER,defaultNumber = 0)
429
+ public void setSelectChildPosition(HippyListView view, int position){
430
+ if(view instanceof TVRecyclerView){
431
+ ((TVRecyclerView) view).setSelectChildPosition(position);
432
+ }
433
+ }
434
+
435
+ @HippyControllerProps(name = "initPosition", defaultType = HippyControllerProps.MAP)
436
+ public void setScrollTargetPosition(HippyListView view, HippyMap map){
437
+
438
+ Log.d("PendingFocus","initPosition view:"+view+",map:"+map);
439
+ if(view instanceof TVRecyclerView){
440
+ ((TVRecyclerView) view).setInitPositionInfo(map);
441
+ }
442
+ }
443
+
444
+ @HippyControllerProps(name = "initScroll", defaultType = HippyControllerProps.ARRAY)
445
+ public void setScrollPosition(HippyListView view, HippyArray array){
446
+
447
+ Log.d("","initScroll view:"+view+",array:"+array);
448
+ if(view instanceof TVRecyclerView){
449
+ if(array.size() > 0){
450
+
451
+ int pos = array.getInt(0);
452
+ int offset = 0;
453
+ if(array.size() > 1){
454
+ offset = array.getInt(1);
455
+ }
456
+ if(pos > -1) {
457
+ ((TVRecyclerView) view).scrollToPosition(pos, offset);
458
+ }
459
+ }
460
+
461
+ }
462
+ }
463
+
464
+
465
+ @HippyControllerProps(name = "initFocusPositionAfterLayout", defaultType = HippyControllerProps.NUMBER,defaultNumber = -1)
466
+ public void setInitFocusAfterLayout(HippyListView view, int position){
467
+ if(view instanceof TVRecyclerView){
468
+ ((TVRecyclerView) view).setInitFocusPositionAfterLayout(position);
469
+ }
470
+ }
471
+
472
+
473
+
474
+ //此处vue是怎么传值的
475
+ @HippyControllerProps(name = "blockFocusOnFail", defaultType = HippyControllerProps.BOOLEAN ,defaultBoolean = false)
476
+ public void setBlockFocusOnFail(HippyListView view, HippyMap hippyMap){
477
+ if(view instanceof TVRecyclerView) {
478
+ ((TVRecyclerView) view).setBlockFocusOnFail(new int[InternalExtendViewUtil.FOCUS_BLOCK_DIRECTION_ALL]);
479
+ }
480
+ }
481
+
482
+ //此处vue是怎么传值的
483
+ @HippyControllerProps(name = "listenFocusSearchOnFail", defaultType = HippyControllerProps.BOOLEAN ,defaultBoolean = false)
484
+ public void setListenFocusSearchOnFail(HippyListView view, boolean listen){
485
+ if(view instanceof TVRecyclerView) {
486
+ ((TVRecyclerView) view).setListenFocusSearchOnFail(listen);
487
+ }
488
+ }
489
+
490
+ @HippyControllerProps(name = "makeChildVisibleType", defaultType = HippyControllerProps.STRING)
491
+ public void setMakeChildVisibleType(HippyListView view, String type){
492
+ if(view instanceof TVRecyclerView) {
493
+ if ("normal".equals(type)) {
494
+ ((TVRecyclerView) view).setRequestChildOnScreenType(TVRecyclerView.REQUEST_CHILD_ON_SCREEN_TYPE_ANDROID);
495
+ } else if("none".equals(type)){
496
+ ((TVRecyclerView) view).setRequestChildOnScreenType(TVRecyclerView.REQUEST_CHILD_ON_SCREEN_TYPE_NONE);
497
+ } else {
498
+ ((TVRecyclerView) view).setRequestChildOnScreenType(TVRecyclerView.REQUEST_CHILD_ON_SCREEN_TYPE_CENTER);
499
+ }
500
+ }
501
+ }
502
+
503
+ @HippyControllerProps(name = "makeChildVisibleClampBackward", defaultType = HippyControllerProps.NUMBER)
504
+ public void setRequestChildOnScreenClampBackward(HippyListView view,int clampBackward) {
505
+ if(view instanceof TVRecyclerView){
506
+ ((TVRecyclerView) view).setRequestChildOnScreenType(TVRecyclerView.REQUEST_CHILD_ON_SCREEN_TYPE_ANDROID);
507
+ ((TVRecyclerView) view).setRequestChildOnScreenClampBackward(clampBackward);
508
+ }
509
+ }
510
+
511
+ @HippyControllerProps(name = "makeChildVisibleClampForward", defaultType = HippyControllerProps.NUMBER)
512
+ public void setRequestChildOnScreenClampForward(HippyListView view,int clampForward) {
513
+ if(view instanceof TVRecyclerView){
514
+ ((TVRecyclerView) view).setRequestChildOnScreenType(TVRecyclerView.REQUEST_CHILD_ON_SCREEN_TYPE_ANDROID);
515
+ ((TVRecyclerView) view).setRequestChildOnScreenClampForward(clampForward);
516
+ }
517
+
518
+ }
519
+
520
+ @HippyControllerProps(name = "scrollThresholdHorizontal", defaultType = HippyControllerProps.NUMBER)
521
+ public void setScrollThresholdHorizontal(HippyListView view,int threshold) {
522
+ if(view instanceof TVRecyclerView){
523
+ ((TVRecyclerView) view).setScrollThresholdHorizontal(threshold);
524
+ }
525
+ }
526
+
527
+ @HippyControllerProps(name = "scrollThresholdVertical", defaultType = HippyControllerProps.NUMBER)
528
+ public void setScrollThresholdVertical(HippyListView view,int threshold) {
529
+ if(view instanceof TVRecyclerView){
530
+ ((TVRecyclerView) view).setScrollThresholdVertical(threshold);
531
+ }
532
+ }
533
+
534
+ @HippyControllerProps(name = "scrollYLesserReferenceValue", defaultType = HippyControllerProps.NUMBER)
535
+ public void setScrollYLesserReferenceValue(HippyListView view,int value) {
536
+ if(view instanceof TVRecyclerView){
537
+ ((TVRecyclerView) view).setScrollYLesserReferenceValue(value);
538
+ }
539
+ }
540
+
541
+ @HippyControllerProps(name = "scrollYGreaterReferenceValue", defaultType = HippyControllerProps.NUMBER)
542
+ public void setScrollYGreaterReferenceValue(HippyListView view,int value) {
543
+ if(view instanceof TVRecyclerView){
544
+ ((TVRecyclerView) view).setScrollYGreaterReferenceValue(value);
545
+ }
546
+ }
547
+
548
+ @HippyControllerProps(name = "shakePreCheckNumber", defaultType = HippyControllerProps.NUMBER, defaultNumber = 2)
549
+ public void setShakePreCheckNumber(HippyListView view,int shakePreCheckNumber) {
550
+ if(view instanceof TVRecyclerView){
551
+ ((TVRecyclerView) view).setShakePreCheckNumber(shakePreCheckNumber);
552
+ }
553
+ }
554
+
555
+ @HippyControllerProps(name = "blankItemDecoration", defaultType = HippyControllerProps.ARRAY)
556
+ public void setBlankItemDecoration(HippyListView view,HippyArray array) {
557
+ if(view instanceof TVRecyclerView){
558
+ ((TVRecyclerView) view).setBlankItemDecoration(array);
559
+ }
560
+ }
561
+
562
+
563
+
564
+ private OverScrollDecoration mOverScrollDecoration;
565
+
566
+ private static class OverScrollDecoration extends RecyclerViewBase.ItemDecoration{
567
+
568
+ public int start;
569
+ public int end;
570
+
571
+ @Override
572
+ public void getItemOffsets(Rect outRect, int itemPosition, RecyclerViewBase parent) {
573
+ super.getItemOffsets(outRect, itemPosition, parent);
574
+
575
+ if(parent instanceof TVRecyclerView){
576
+
577
+ final boolean isVertical = ((TVRecyclerView) parent).getOrientation() == BaseLayoutManager.VERTICAL;
578
+
579
+ if(itemPosition == 0){
580
+ if(isVertical){
581
+ outRect.top = start;
582
+ }else{
583
+ outRect.left = start;
584
+ }
585
+ }else if(itemPosition == parent.getAdapter().getItemCount() -1){
586
+ if(isVertical){
587
+ outRect.bottom = end;
588
+ }else{
589
+ outRect.right = end;
590
+ }
591
+ }
592
+
593
+ }
594
+
595
+ }
596
+ }
597
+
598
+ @HippyControllerProps(name = "enableSelectOnFocus", defaultType = HippyControllerProps.BOOLEAN, defaultBoolean = false)
599
+ public void setEnableSelectOnFocus(HippyListView view, boolean flag)
600
+ {
601
+ if(view instanceof TVRecyclerView) {
602
+ ((TVRecyclerView) view).setEnableSelectOnFocus(flag);
603
+ }
604
+ }
605
+ @HippyControllerProps(name = "useAdvancedFocusSearch", defaultType = HippyControllerProps.BOOLEAN)
606
+ public void setUseAdvancedFocusSearch(HippyListView view, boolean flag)
607
+ {
608
+ if(view instanceof TVRecyclerView) {
609
+ ((TVRecyclerView) view).setUseAdvancedFocusSearch(flag);
610
+ }
611
+ }
612
+
613
+ @HippyControllerProps(name = "checkScrollOffsetOnStateChanged", defaultType = HippyControllerProps.BOOLEAN)
614
+ public void setCheckScrollOffsetOnStateChanged(HippyListView view,boolean b){
615
+ if(view instanceof TVRecyclerView) {
616
+ ((TVRecyclerView) view).setCheckScrollOffsetOnStateChanged(b);
617
+ }
618
+ }
619
+
620
+
621
+
622
+ }
@@ -0,0 +1,31 @@
1
+ /* Tencent is pleased to support the open source community by making Hippy available.
2
+ * Copyright (C) 2018 THL A29 Limited, a Tencent company. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ package com.tencent.mtt.hippy.views.list;
17
+
18
+ @SuppressWarnings({"unused"})
19
+ public interface HippyRecycler {
20
+
21
+ //恢复默认的时候使用
22
+ void resetProps();
23
+
24
+ //replace id 的时候清除不需要的属性
25
+ void clear();
26
+
27
+ void onResetBeforeCache();
28
+
29
+ void notifySaveState();
30
+ void notifyRestoreState();
31
+ }
@@ -0,0 +1,23 @@
1
+ /* Tencent is pleased to support the open source community by making Hippy available.
2
+ * Copyright (C) 2018 THL A29 Limited, a Tencent company. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ package com.tencent.mtt.hippy.views.list;
17
+
18
+ import com.tencent.mtt.hippy.uimanager.ListItemRenderNode;
19
+
20
+ public interface IRecycleItemTypeChange {
21
+
22
+ void onRecycleItemTypeChanged(int oldType, int newType, ListItemRenderNode listItemNode);
23
+ }