我正在尝试使用通过RecyclerView实现的新Google的ViewPager2(https://developer.android.com/jetpack/androidx/releases/viewpager2)类。
ViewPager的主要思想之一是为选定的视图创建“邻居”视图,以便用户在滚动时可以立即看到创建的视图。但是,正如我现在看到的那样,开始滚动时,仅在适配器(我正在使用RecyclerView.Adapter)中调用onBindViewHolder。
有人知道如何解决该问题,以便在对用户实际可见之前在邻居上调用onBind方法吗?谢谢。
答案 0 :(得分:1)
您可以在-- get names of updated columns
DECLARE @idTable INT
declare @ColumnName nvarchar(300)
declare @ColId int
SELECT @idTable = T.id
FROM sysobjects P JOIN sysobjects T ON P.parent_obj = T.id
WHERE P.id = @@procid
DECLARE @changedProperties nvarchar(max) = ''
DECLARE @Columns_Updated VARCHAR(2000) = ''
DECLARE @maxByteCU INT
DECLARE @curByteCU INT
SELECT @maxByteCU = DATALENGTH(COLUMNS_UPDATED()),
@curByteCU = 1
WHILE @curByteCU <= @maxByteCU BEGIN
DECLARE @cByte INT
SET @cByte = SUBSTRING(COLUMNS_UPDATED(), @curByteCU, 1)
DECLARE @curBit INT
DECLARE @maxBit INT
SELECT @curBit = 1,
@maxBit = 8
WHILE @curBit <= @maxBit BEGIN
IF CONVERT(BIT, @cByte & POWER(2, @curBit - 1)) <> 0 BEGIN
SET @ColId = cast( CONVERT(VARCHAR, 8 * (@curByteCU - 1) + @curBit) as int)
select @ColumnName = [Name]
FROM syscolumns
WHERE id = @idTable and colid = @ColId
SET @Columns_Updated = @Columns_Updated + ',' + @ColumnName
END
SET @curBit = @curBit + 1
END
SET @curByteCU = @curByteCU + 1
END
上使用setOffscreenPageLimit(...)
在用户滚动到相邻ViewHolder之前创建它们。