Skip to content

Commit abc0465

Browse files
committed
Update
1 parent ef251e2 commit abc0465

2 files changed

Lines changed: 39 additions & 36 deletions

File tree

app/src/main/java/com/tool/tree/MainActivity.kt

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -172,27 +172,27 @@ class MainActivity : AppCompatActivity() {
172172

173173
// ========================
174174
private fun reloadTabs() {
175-
if (isFavoritesTab) {
176-
val favoritesConfig = krScriptConfig.favoriteConfig
177-
Thread {
178-
val items = getItems(favoritesConfig)
179-
items?.let {
180-
handler.post {
181-
updateFavoritesTab(it, favoritesConfig)
182-
}
183-
}
184-
}.start()
185-
} else {
186-
val pagesConfig = krScriptConfig.pageListConfig
187-
Thread {
188-
val items = getItems(pagesConfig)
189-
items?.let {
190-
handler.post {
191-
updateMoreTab(it, pagesConfig)
192-
}
175+
// Xác định tab đang mở
176+
val position = if (isFavoritesTab) 0 else 1
177+
val pageNode = if (isFavoritesTab) krScriptConfig.favoriteConfig else krScriptConfig.pageListConfig
178+
179+
// Chạy background thread để load items
180+
Thread {
181+
val items = getItems(pageNode) // lấy dữ liệu từ config
182+
items?.let {
183+
// Chuyển lên UI thread để cập nhật fragment
184+
handler.post {
185+
val newFragment = ActionListFragment.create(
186+
it,
187+
getKrScriptActionHandler(pageNode, isFavoritesTab),
188+
null,
189+
ThemeModeState.getThemeMode()
190+
)
191+
// Cập nhật fragment mới vào adapter
192+
adapter.updateFragment(position, newFragment)
193193
}
194-
}.start()
195-
}
194+
}
195+
}.start()
196196
}
197197

198198
// ========================

app/src/main/java/com/tool/tree/ui/MainPagerAdapter.kt

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,19 @@ class MainPagerAdapter(activity: AppCompatActivity) : FragmentStateAdapter(activ
1818
fun addFragment(fragment: Fragment, title: String) {
1919
fragments.add(fragment)
2020
titles.add(title)
21-
ids.add(nextId++) // đảm bảo ID không trùng
21+
ids.add(nextId++)
22+
notifyDataSetChanged()
23+
}
24+
25+
/**
26+
* Cập nhật fragment tại vị trí, tạo fragment mới (reload)
27+
*/
28+
fun updateFragment(position: Int, fragment: Fragment) {
29+
if (position in fragments.indices) {
30+
fragments[position] = fragment
31+
// giữ ID cũ để ViewPager2 không recreate fragment sai
32+
notifyItemChanged(position)
33+
}
2234
}
2335

2436
/**
@@ -36,37 +48,27 @@ class MainPagerAdapter(activity: AppCompatActivity) : FragmentStateAdapter(activ
3648
/**
3749
* Lấy title tab
3850
*/
39-
fun getTitle(position: Int): String {
40-
return titles[position]
41-
}
51+
fun getTitle(position: Int): String = titles[position]
4252

4353
/**
4454
* Lấy fragment hiện tại (để updateData)
4555
*/
46-
fun getFragment(position: Int): Fragment {
47-
return fragments[position]
48-
}
56+
fun getFragment(position: Int): Fragment = fragments[position]
4957

5058
/**
5159
* Tìm vị trí tab theo title
5260
*/
53-
fun getTitleIndex(title: String): Int {
54-
return titles.indexOf(title)
55-
}
61+
fun getTitleIndex(title: String): Int = titles.indexOf(title)
5662

5763
/**
5864
* ID ổn định cho ViewPager2 (tránh recreate fragment)
5965
*/
60-
override fun getItemId(position: Int): Long {
61-
return ids[position]
62-
}
66+
override fun getItemId(position: Int): Long = ids[position]
6367

6468
/**
6569
* Kiểm tra fragment còn tồn tại
6670
*/
67-
override fun containsItem(itemId: Long): Boolean {
68-
return ids.contains(itemId)
69-
}
71+
override fun containsItem(itemId: Long): Boolean = ids.contains(itemId)
7072

7173
/**
7274
* Xoá toàn bộ tab (nếu cần reload lại toàn bộ)
@@ -76,5 +78,6 @@ class MainPagerAdapter(activity: AppCompatActivity) : FragmentStateAdapter(activ
7678
titles.clear()
7779
ids.clear()
7880
nextId = 0L
81+
notifyDataSetChanged()
7982
}
8083
}

0 commit comments

Comments
 (0)