From 4de97ee04522d4a7bd40f5a74d60eae63c7194d2 Mon Sep 17 00:00:00 2001 From: Jun Zhou Date: Thu, 19 Oct 2023 11:45:18 -0400 Subject: [PATCH 1/4] add the newinstance function --- .idea/misc.xml | 1 - .../main/java/edu/temple/inclassactivity/MainActivity.kt | 8 ++++++-- app/src/main/res/layout/activity_main.xml | 9 +++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 0ad17cb..8978d23 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - diff --git a/app/src/main/java/edu/temple/inclassactivity/MainActivity.kt b/app/src/main/java/edu/temple/inclassactivity/MainActivity.kt index 85bef74..74fd21a 100644 --- a/app/src/main/java/edu/temple/inclassactivity/MainActivity.kt +++ b/app/src/main/java/edu/temple/inclassactivity/MainActivity.kt @@ -2,6 +2,7 @@ package edu.temple.inclassactivity import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import androidx.fragment.app.Fragment class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -12,8 +13,11 @@ class MainActivity : AppCompatActivity() { val typedArray = resources.obtainTypedArray(R.array.image_ids) val imageArray = IntArray(typedArray.length()) {typedArray.getResourceId(it, 0)} typedArray.recycle() - - // Attach an instance of ImageDisplayFragment using factory method + val fragment1 = ImageDisplayFragment.newInstance(imageArray) + supportFragmentManager + .beginTransaction() + .add(R.id.fragmentContainerView, fragment1) + .commit() } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index d548e41..cc99405 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -5,4 +5,13 @@ android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> + + \ No newline at end of file From e8a91c26acf1a111efefe1bea4c87309c0152ad2 Mon Sep 17 00:00:00 2001 From: Jun Zhou Date: Tue, 24 Oct 2023 12:06:20 -0400 Subject: [PATCH 2/4] if statement to check whether is initialized or not --- .../java/edu/temple/inclassactivity/ImageDisplayFragment.kt | 3 ++- app/src/main/java/edu/temple/inclassactivity/MainActivity.kt | 1 - app/src/main/res/layout/activity_main.xml | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/edu/temple/inclassactivity/ImageDisplayFragment.kt b/app/src/main/java/edu/temple/inclassactivity/ImageDisplayFragment.kt index 4d09c5b..4c30405 100644 --- a/app/src/main/java/edu/temple/inclassactivity/ImageDisplayFragment.kt +++ b/app/src/main/java/edu/temple/inclassactivity/ImageDisplayFragment.kt @@ -40,7 +40,8 @@ class ImageDisplayFragment : Fragment() { // The recycler view is the root element of the Fragment's layout // as such the view argument passed to onViewCreated() is the RecyclerView with (view as RecyclerView) { - adapter = CustomRecyclerAdapter(images) + if(::images.isInitialized) + adapter = CustomRecyclerAdapter(images) layoutManager = GridLayoutManager(requireContext(), 2) } } diff --git a/app/src/main/java/edu/temple/inclassactivity/MainActivity.kt b/app/src/main/java/edu/temple/inclassactivity/MainActivity.kt index 74fd21a..65b5d63 100644 --- a/app/src/main/java/edu/temple/inclassactivity/MainActivity.kt +++ b/app/src/main/java/edu/temple/inclassactivity/MainActivity.kt @@ -18,6 +18,5 @@ class MainActivity : AppCompatActivity() { .beginTransaction() .add(R.id.fragmentContainerView, fragment1) .commit() - } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index cc99405..4523433 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -7,6 +7,7 @@ tools:context=".MainActivity"> Date: Tue, 24 Oct 2023 12:17:26 -0400 Subject: [PATCH 3/4] setimages function --- .../java/edu/temple/inclassactivity/ImageDisplayFragment.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/edu/temple/inclassactivity/ImageDisplayFragment.kt b/app/src/main/java/edu/temple/inclassactivity/ImageDisplayFragment.kt index 4c30405..567c5fc 100644 --- a/app/src/main/java/edu/temple/inclassactivity/ImageDisplayFragment.kt +++ b/app/src/main/java/edu/temple/inclassactivity/ImageDisplayFragment.kt @@ -54,4 +54,10 @@ class ImageDisplayFragment : Fragment() { } } } + + fun setimage(newimages: IntArray){ + images = newimages + val adapter = CustomRecyclerAdapter(newimages) + (view as RecyclerView).adapter = adapter + } } \ No newline at end of file From 4b1006ecef449041bcf302da3b2cf5550a9fb0af Mon Sep 17 00:00:00 2001 From: Jun Zhou Date: Thu, 26 Oct 2023 11:33:37 -0400 Subject: [PATCH 4/4] solution without viewmodel --- .../inclassactivity/ImageDisplayFragment.kt | 3 ++- .../edu/temple/inclassactivity/MainActivity.kt | 9 ++++----- app/src/main/res/layout/activity_main.xml | 18 +++++++++++++++--- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/edu/temple/inclassactivity/ImageDisplayFragment.kt b/app/src/main/java/edu/temple/inclassactivity/ImageDisplayFragment.kt index 567c5fc..cd4d6ee 100644 --- a/app/src/main/java/edu/temple/inclassactivity/ImageDisplayFragment.kt +++ b/app/src/main/java/edu/temple/inclassactivity/ImageDisplayFragment.kt @@ -58,6 +58,7 @@ class ImageDisplayFragment : Fragment() { fun setimage(newimages: IntArray){ images = newimages val adapter = CustomRecyclerAdapter(newimages) - (view as RecyclerView).adapter = adapter + view?.run { + (view as RecyclerView).adapter = adapter} } } \ No newline at end of file diff --git a/app/src/main/java/edu/temple/inclassactivity/MainActivity.kt b/app/src/main/java/edu/temple/inclassactivity/MainActivity.kt index 65b5d63..f8ea43d 100644 --- a/app/src/main/java/edu/temple/inclassactivity/MainActivity.kt +++ b/app/src/main/java/edu/temple/inclassactivity/MainActivity.kt @@ -2,6 +2,7 @@ package edu.temple.inclassactivity import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.widget.Button import androidx.fragment.app.Fragment class MainActivity : AppCompatActivity() { @@ -13,10 +14,8 @@ class MainActivity : AppCompatActivity() { val typedArray = resources.obtainTypedArray(R.array.image_ids) val imageArray = IntArray(typedArray.length()) {typedArray.getResourceId(it, 0)} typedArray.recycle() - val fragment1 = ImageDisplayFragment.newInstance(imageArray) - supportFragmentManager - .beginTransaction() - .add(R.id.fragmentContainerView, fragment1) - .commit() + findViewById