Skip to content

Commit

Permalink
NTV-365 Migrate to Kotlin DiscoveryAdapter.java (#1531)
Browse files Browse the repository at this point in the history
* Rename .java to .kt

* Migrate to Kotlin `DiscoveryAdapter.java`

* Add Discovery sections adapter

* Update DiscoveryOnboardingViewHolder

* Update DiscoveryFragment with Discovery adapters

* Remove  DiscoveryAdapter

* Update format

* rename object

* update ActivitySampleFriendBackingViewHolder

* update ActivitySampleFriendBackingViewHolder
ActivitySampleProjectViewHolder

* Add viewModels to viewholders

* Add viewModels test

* Add viewModels test

* Solve viewmodel issue
  • Loading branch information
hadia committed Feb 2, 2022
1 parent e5bf14b commit cf962f1
Show file tree
Hide file tree
Showing 18 changed files with 662 additions and 236 deletions.
@@ -0,0 +1,95 @@
package com.kickstarter.ui.adapters

import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.annotation.LayoutRes
import com.kickstarter.R
import com.kickstarter.databinding.ActivitySampleFriendBackingViewBinding
import com.kickstarter.databinding.ActivitySampleFriendFollowViewBinding
import com.kickstarter.databinding.ActivitySampleProjectViewBinding
import com.kickstarter.databinding.EmptyViewBinding
import com.kickstarter.models.Activity
import com.kickstarter.ui.viewholders.ActivitySampleFriendBackingViewHolder
import com.kickstarter.ui.viewholders.ActivitySampleFriendFollowViewHolder
import com.kickstarter.ui.viewholders.ActivitySampleProjectViewHolder
import com.kickstarter.ui.viewholders.EmptyViewHolder
import com.kickstarter.ui.viewholders.KSViewHolder

class DiscoveryActivitySampleAdapter(private val delegate: Delegate) : KSListAdapter() {
interface Delegate :
ActivitySampleFriendFollowViewHolder.Delegate,
ActivitySampleFriendBackingViewHolder.Delegate,
ActivitySampleProjectViewHolder.Delegate

fun takeActivity(activity: Activity?) {
activity?.let {
setSection(SECTION_ACTIVITY_SAMPLE_VIEW, listOf(activity))
}
submitList(items())
}

@LayoutRes
override fun layout(sectionRow: SectionRow): Int {
return if (objectFromSectionRow(sectionRow) is Activity) {
val activity = objectFromSectionRow(sectionRow) as Activity
return when {
activity.category() == Activity.CATEGORY_BACKING -> {
R.layout.activity_sample_friend_backing_view
}
activity.category() == Activity.CATEGORY_FOLLOW -> {
R.layout.activity_sample_friend_follow_view
}
else -> {
R.layout.activity_sample_project_view
}
}
} else {
R.layout.empty_view
}
}

override fun viewHolder(@LayoutRes layout: Int, viewGroup: ViewGroup): KSViewHolder {
return when (layout) {
R.layout.activity_sample_friend_backing_view -> ActivitySampleFriendBackingViewHolder(
ActivitySampleFriendBackingViewBinding.inflate(
LayoutInflater.from(viewGroup.context),
viewGroup,
false
),
delegate
)
R.layout.activity_sample_friend_follow_view -> ActivitySampleFriendFollowViewHolder(
ActivitySampleFriendFollowViewBinding.inflate(
LayoutInflater.from(viewGroup.context),
viewGroup,
false
),
delegate
)
R.layout.activity_sample_project_view -> ActivitySampleProjectViewHolder(
ActivitySampleProjectViewBinding.inflate(
LayoutInflater.from(viewGroup.context),
viewGroup,
false
),
delegate
)
else -> EmptyViewHolder(
EmptyViewBinding.inflate(
LayoutInflater.from(
viewGroup.context
),
viewGroup, false
)
)
}
}

companion object {
private const val SECTION_ACTIVITY_SAMPLE_VIEW = 0
}

init {
insertSection(SECTION_ACTIVITY_SAMPLE_VIEW, emptyList<Activity>())
}
}
135 changes: 0 additions & 135 deletions app/src/main/java/com/kickstarter/ui/adapters/DiscoveryAdapter.java

This file was deleted.

@@ -0,0 +1,42 @@
package com.kickstarter.ui.adapters
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.annotation.LayoutRes
import com.kickstarter.R
import com.kickstarter.databinding.ItemLightsOnBinding
import com.kickstarter.ui.data.Editorial
import com.kickstarter.ui.viewholders.EditorialViewHolder
import com.kickstarter.ui.viewholders.KSViewHolder

class DiscoveryEditorialAdapter(private val delegate: Delegate) : KSListAdapter() {
interface Delegate : EditorialViewHolder.Delegate

fun setShouldShowEditorial(editorial: Editorial?) {
if (editorial == null) {
setSection(SECTION_EDITORIAL_VIEW, emptyList<Any>())
} else {
setSection(SECTION_EDITORIAL_VIEW, listOf(editorial))
}
submitList(items())
}
override fun layout(sectionRow: SectionRow): Int = R.layout.item_lights_on

override fun viewHolder(@LayoutRes layout: Int, viewGroup: ViewGroup): KSViewHolder {
return EditorialViewHolder(
ItemLightsOnBinding.inflate(
LayoutInflater.from(viewGroup.context),
viewGroup,
false
),
delegate
)
}

companion object {
private const val SECTION_EDITORIAL_VIEW = 0
}

init {
insertSection(SECTION_EDITORIAL_VIEW, emptyList<Editorial>())
}
}
@@ -0,0 +1,44 @@
package com.kickstarter.ui.adapters

import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.annotation.LayoutRes
import com.kickstarter.R
import com.kickstarter.databinding.DiscoveryOnboardingViewBinding
import com.kickstarter.ui.viewholders.DiscoveryOnboardingViewHolder
import com.kickstarter.ui.viewholders.KSViewHolder

class DiscoveryOnboardingAdapter(private val delegate: Delegate) : KSListAdapter() {
interface Delegate :
DiscoveryOnboardingViewHolder.Delegate

fun setShouldShowOnboardingView(shouldShowOnboardingView: Boolean) {
if (shouldShowOnboardingView) {
setSection(SECTION_ONBOARDING_VIEW, listOf(true))
} else {
setSection(SECTION_ONBOARDING_VIEW, emptyList<Boolean>())
}
submitList(items())
}

override fun layout(sectionRow: SectionRow): Int = R.layout.discovery_onboarding_view

override fun viewHolder(@LayoutRes layout: Int, viewGroup: ViewGroup): KSViewHolder {
return DiscoveryOnboardingViewHolder(
DiscoveryOnboardingViewBinding.inflate(
LayoutInflater.from(viewGroup.context),
viewGroup,
false
),
delegate
)
}

companion object {
private const val SECTION_ONBOARDING_VIEW = 0
}

init {
insertSection(SECTION_ONBOARDING_VIEW, emptyList<Boolean>())
}
}
@@ -0,0 +1,42 @@
package com.kickstarter.ui.adapters

import android.util.Pair
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.annotation.LayoutRes
import com.kickstarter.R
import com.kickstarter.databinding.ProjectCardViewBinding
import com.kickstarter.models.Project
import com.kickstarter.services.DiscoveryParams
import com.kickstarter.ui.viewholders.KSViewHolder
import com.kickstarter.ui.viewholders.ProjectCardViewHolder

class DiscoveryProjectCardAdapter(private val delegate: Delegate) : KSListAdapter() {
interface Delegate :
ProjectCardViewHolder.Delegate

fun takeProjects(projects: List<Pair<Project, DiscoveryParams>>) {
setSection(SECTION_PROJECT_CARD_VIEW, projects)
submitList(items())
}
override fun layout(sectionRow: SectionRow): Int = R.layout.project_card_view

override fun viewHolder(@LayoutRes layout: Int, viewGroup: ViewGroup): KSViewHolder {
return ProjectCardViewHolder(
ProjectCardViewBinding.inflate(
LayoutInflater.from(viewGroup.context),
viewGroup,
false
),
delegate
)
}

companion object {
private const val SECTION_PROJECT_CARD_VIEW = 0
}

init {
insertSection(SECTION_PROJECT_CARD_VIEW, emptyList<Pair<Project, DiscoveryParams>>())
}
}

0 comments on commit cf962f1

Please sign in to comment.