ViewPager2如何实现双向无限滚动?

时间:2020-02-16 05:54:54

标签: android

我在项目https://github.com/IslamKhSh/CardSlider中使用此库 我需要在两个方向上实现无限滚动。 我试图从stackoverflow中找到一些实现,但是没有一个对我有帮助。

我在两个冻结的应用程序中都尝试了两种解决方案。

1个解决方案:

Accounts

2个解决方案:

SELECT 
    [Project2].[OnlineID] AS [OnlineID], 
    [Project2].[pk_AccountID] AS [pk_AccountID], 
    [Project2].[IsWaiverOnFile] AS [IsWaiverOnFile], 
    [Project2].[EmergencyDirectives] AS [EmergencyDirectives], 
    [Project2].[FirstMembershipDate] AS [FirstMembershipDate], 
    [Project2].[fk_FacilityID] AS [fk_FacilityID], 
    [Project2].[IsDeleted] AS [IsDeleted], 
    [Project2].[CreatedDate] AS [CreatedDate], 
    [Project2].[LastModifiedDate] AS [LastModifiedDate], 
    [Project2].[DoNotMail] AS [DoNotMail], 
    [Project2].[fk_ReferringAccountID] AS [fk_ReferringAccountID], 
    [Project2].[DoNotEmail] AS [DoNotEmail], 
    [Project2].[CreatedOnline] AS [CreatedOnline], 
    [Project2].[fk_OriginalInquiryID] AS [fk_OriginalInquiryID], 
    [Project2].[IsMediaReleaseOnFile] AS [IsMediaReleaseOnFile], 
    [Project2].[Comments] AS [Comments], 
    [Project2].[C3] AS [C1], 
    [Project2].[C1] AS [C2], 
    [Project2].[pk_AccountMemberID] AS [pk_AccountMemberID], 
    [Project2].[fk_PersonID] AS [fk_PersonID], 
    [Project2].[fk_AccountID] AS [fk_AccountID], 
    [Project2].[CreatedDate1] AS [CreatedDate1], 
    [Project2].[LastModifiedDate1] AS [LastModifiedDate1], 
    [Project2].[fk_FacilityID1] AS [fk_FacilityID1], 
    [Project2].[Relationship] AS [Relationship], 
    [Project2].[IsPrimary] AS [IsPrimary], 
    [Project2].[pk_PersonID] AS [pk_PersonID], 
    [Project2].[FirstName] AS [FirstName], 
    [Project2].[LastName] AS [LastName], 
    [Project2].[fk_AddressID] AS [fk_AddressID], 
    [Project2].[fk_FacilityID2] AS [fk_FacilityID2], 
    [Project2].[CreatedDate2] AS [CreatedDate2], 
    [Project2].[LastModifiedDate2] AS [LastModifiedDate2], 
    [Project2].[CreatedOnline1] AS [CreatedOnline1], 
    [Project2].[IsDeleted1] AS [IsDeleted1], 
    [Project2].[C2] AS [C3], 
    [Project2].[pk_PersonPhoneID] AS [pk_PersonPhoneID], 
    [Project2].[fk_PhoneNumberID] AS [fk_PhoneNumberID], 
    [Project2].[fk_PhoneTypeID] AS [fk_PhoneTypeID], 
    [Project2].[IsDeleted2] AS [IsDeleted2], 
    [Project2].[CreatedDate3] AS [CreatedDate3], 
    [Project2].[LastModifiedDate3] AS [LastModifiedDate3], 
    [Project2].[fk_FacilityID3] AS [fk_FacilityID3], 
    [Project2].[fk_PersonID1] AS [fk_PersonID1], 
    [Project2].[IsPrimary1] AS [IsPrimary1]
    FROM ( SELECT 
        [Limit1].[pk_AccountID] AS [pk_AccountID], 
        [Limit1].[OnlineID] AS [OnlineID], 
        [Limit1].[fk_FacilityID] AS [fk_FacilityID], 
        [Limit1].[fk_OriginalInquiryID] AS [fk_OriginalInquiryID], 
        [Limit1].[fk_ReferringAccountID] AS [fk_ReferringAccountID], 
        [Limit1].[FirstMembershipDate] AS [FirstMembershipDate], 
        [Limit1].[EmergencyDirectives] AS [EmergencyDirectives], 
        [Limit1].[IsWaiverOnFile] AS [IsWaiverOnFile], 
        [Limit1].[IsMediaReleaseOnFile] AS [IsMediaReleaseOnFile], 
        [Limit1].[DoNotMail] AS [DoNotMail], 
        [Limit1].[DoNotEmail] AS [DoNotEmail], 
        [Limit1].[CreatedDate] AS [CreatedDate], 
        [Limit1].[LastModifiedDate] AS [LastModifiedDate], 
        [Limit1].[CreatedOnline] AS [CreatedOnline], 
        [Limit1].[IsDeleted] AS [IsDeleted], 
        [Limit1].[Comments] AS [Comments], 
        [Join2].[pk_AccountMemberID] AS [pk_AccountMemberID], 
        [Join2].[fk_PersonID1] AS [fk_PersonID], 
        [Join2].[fk_AccountID] AS [fk_AccountID], 
        [Join2].[CreatedDate1] AS [CreatedDate1], 
        [Join2].[LastModifiedDate1] AS [LastModifiedDate1], 
        [Join2].[fk_FacilityID1] AS [fk_FacilityID1], 
        [Join2].[Relationship] AS [Relationship], 
        [Join2].[IsPrimary1] AS [IsPrimary], 
        [Join2].[pk_PersonID] AS [pk_PersonID], 
        [Join2].[FirstName] AS [FirstName], 
        [Join2].[LastName] AS [LastName], 
        [Join2].[fk_AddressID] AS [fk_AddressID], 
        [Join2].[fk_FacilityID2] AS [fk_FacilityID2], 
        [Join2].[CreatedDate2] AS [CreatedDate2], 
        [Join2].[LastModifiedDate2] AS [LastModifiedDate2], 
        [Join2].[CreatedOnline] AS [CreatedOnline1], 
        [Join2].[IsDeleted1] AS [IsDeleted1], 
        CASE WHEN ([Join2].[pk_AccountMemberID] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C1], 
        [Join2].[pk_PersonPhoneID] AS [pk_PersonPhoneID], 
        [Join2].[fk_PersonID2] AS [fk_PersonID1], 
        [Join2].[fk_PhoneNumberID] AS [fk_PhoneNumberID], 
        [Join2].[fk_PhoneTypeID] AS [fk_PhoneTypeID], 
        [Join2].[IsDeleted2] AS [IsDeleted2], 
        [Join2].[CreatedDate3] AS [CreatedDate3], 
        [Join2].[LastModifiedDate3] AS [LastModifiedDate3], 
        [Join2].[fk_FacilityID3] AS [fk_FacilityID3], 
        [Join2].[IsPrimary2] AS [IsPrimary1], 
        CASE WHEN ([Join2].[pk_AccountMemberID] IS NULL) THEN CAST(NULL AS int) WHEN ([Join2].[pk_PersonPhoneID] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C2], 
        CASE WHEN ([Join2].[pk_AccountMemberID] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C3]
        FROM   (SELECT TOP (1) 
            [Extent1].[pk_AccountID] AS [pk_AccountID], 
            [Extent1].[OnlineID] AS [OnlineID], 
            [Extent1].[fk_FacilityID] AS [fk_FacilityID], 
            [Extent1].[fk_OriginalInquiryID] AS [fk_OriginalInquiryID], 
            [Extent1].[fk_ReferringAccountID] AS [fk_ReferringAccountID], 
            [Extent1].[FirstMembershipDate] AS [FirstMembershipDate], 
            [Extent1].[EmergencyDirectives] AS [EmergencyDirectives], 
            [Extent1].[IsWaiverOnFile] AS [IsWaiverOnFile], 
            [Extent1].[IsMediaReleaseOnFile] AS [IsMediaReleaseOnFile], 
            [Extent1].[DoNotMail] AS [DoNotMail], 
            [Extent1].[DoNotEmail] AS [DoNotEmail], 
            [Extent1].[CreatedDate] AS [CreatedDate], 
            [Extent1].[LastModifiedDate] AS [LastModifiedDate], 
            [Extent1].[CreatedOnline] AS [CreatedOnline], 
            [Extent1].[IsDeleted] AS [IsDeleted], 
            [Extent1].[Comments] AS [Comments]
            FROM [dbo].[Accounts] AS [Extent1]
            WHERE [Extent1].[pk_AccountID] = @p__linq__0 ) AS [Limit1]
        LEFT OUTER JOIN  (SELECT [Extent2].[pk_AccountMemberID] AS [pk_AccountMemberID], [Extent2].[fk_PersonID] AS [fk_PersonID1], [Extent2].[fk_AccountID] AS [fk_AccountID], [Extent2].[CreatedDate] AS [CreatedDate1], [Extent2].[LastModifiedDate] AS [LastModifiedDate1], [Extent2].[fk_FacilityID] AS [fk_FacilityID1], [Extent2].[Relationship] AS [Relationship], [Extent2].[IsPrimary] AS [IsPrimary1], [Extent3].[pk_PersonID] AS [pk_PersonID], [Extent3].[FirstName] AS [FirstName], [Extent3].[LastName] AS [LastName], [Extent3].[fk_AddressID] AS [fk_AddressID], [Extent3].[fk_FacilityID] AS [fk_FacilityID2], [Extent3].[CreatedDate] AS [CreatedDate2], [Extent3].[LastModifiedDate] AS [LastModifiedDate2], [Extent3].[CreatedOnline] AS [CreatedOnline], [Extent3].[IsDeleted] AS [IsDeleted1], [Extent4].[pk_PersonPhoneID] AS [pk_PersonPhoneID], [Extent4].[fk_PersonID] AS [fk_PersonID2], [Extent4].[fk_PhoneNumberID] AS [fk_PhoneNumberID], [Extent4].[fk_PhoneTypeID] AS [fk_PhoneTypeID], [Extent4].[IsDeleted] AS [IsDeleted2], [Extent4].[CreatedDate] AS [CreatedDate3], [Extent4].[LastModifiedDate] AS [LastModifiedDate3], [Extent4].[fk_FacilityID] AS [fk_FacilityID3], [Extent4].[IsPrimary] AS [IsPrimary2]
            FROM   [dbo].[AccountMembers] AS [Extent2]
            INNER JOIN [dbo].[People] AS [Extent3] ON [Extent2].[fk_PersonID] = [Extent3].[pk_PersonID]
            LEFT OUTER JOIN [dbo].[PersonPhones] AS [Extent4] ON [Extent4].[fk_PersonID] = [Extent2].[fk_PersonID] ) AS [Join2] ON [Limit1].[pk_AccountID] = [Join2].[fk_AccountID]
    )  AS [Project2]
    ORDER BY [Project2].[pk_AccountID] ASC, [Project2].[C3] ASC, [Project2].[pk_AccountMemberID] ASC, [Project2].[pk_PersonID] ASC, [Project2].[C2] ASCa

也许您知道一些替代库?

1 个答案:

答案 0 :(得分:0)

我这样实现了此功能。

    val items = ArrayList<Level>()

    override fun getItemCount(): Int = if (items.isEmpty()) 0 else Integer.MAX_VALUE

    override fun onBindViewHolder(holder: CategoryViewHolder, position: Int) {
        holder.bind(items[position % items.size])
    }
相关问题