diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 4df02b2..a406e56 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -49,4 +49,6 @@ dependencies {
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
+ // 추가
+ implementation("androidx.viewpager2:viewpager2:1.1.0")
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 55d27ca..c0e2bea 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -18,26 +18,34 @@
android:theme="@style/Theme.AccountBook">
-
+
-
+ android:theme="@style/Base.Theme.AccountBook">
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/example/accountbook/BaseFragLayout.kt b/app/src/main/java/com/example/accountbook/BaseFragLayout.kt
new file mode 100644
index 0000000..ac9fb55
--- /dev/null
+++ b/app/src/main/java/com/example/accountbook/BaseFragLayout.kt
@@ -0,0 +1,28 @@
+package com.example.accountbook
+
+import android.content.Context
+import android.util.AttributeSet
+import android.view.View
+import androidx.constraintlayout.widget.ConstraintLayout
+
+class BaseFragLayout : ConstraintLayout {
+ constructor(context: Context) : super(context)
+ constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
+ constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
+ context,
+ attrs,
+ defStyleAttr
+ )
+
+ constructor(
+ context: Context,
+ attrs: AttributeSet?,
+ defStyleAttr: Int,
+ defStyleRes: Int
+ ) : super(context, attrs, defStyleAttr, defStyleRes){
+ findViewById(R.id.child)?.let{
+ it.visibility= View.VISIBLE
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/accountbook/BehaviorCalendar.kt b/app/src/main/java/com/example/accountbook/BehaviorCalendar.kt
new file mode 100644
index 0000000..c4b9afa
--- /dev/null
+++ b/app/src/main/java/com/example/accountbook/BehaviorCalendar.kt
@@ -0,0 +1,39 @@
+package com.example.accountbook
+
+import android.content.Context
+import android.util.AttributeSet
+import android.util.Log
+import android.view.View
+import androidx.coordinatorlayout.widget.CoordinatorLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.example.accountbook.calendar.CalendarDateView
+import com.example.accountbook.calendar.CalendarView
+import com.google.android.material.appbar.AppBarLayout
+import com.google.android.material.floatingactionbutton.FloatingActionButton
+
+class BehaviorCalendar(context: Context?, attrs: AttributeSet?) : CoordinatorLayout.Behavior(context, attrs) {
+ override fun onDependentViewChanged(
+ parent: CoordinatorLayout,
+ child: CalendarDateView,
+ dependency: View
+ ): Boolean {
+ // parent: CoordinatorLayout
+ // child: 이벤트를 받아 변경될 뷰
+ // dependency: 의존하고 있는 다른 뷰?
+ child.y = 0f
+ Log.d("", "$child")
+ Log.d("BehaviorCalendar", "$dependency")
+ child.bottom = dependency.top - 50
+ return false
+ }
+
+ override fun layoutDependsOn(
+ parent: CoordinatorLayout,
+ child: CalendarDateView,
+ dependency: View
+ ): Boolean {
+ Log.d("BehaviorCalendar", "layoutDependsOn $dependency")
+ return dependency.id == R.id.list_table
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/accountbook/BehaviorCalendar2.kt b/app/src/main/java/com/example/accountbook/BehaviorCalendar2.kt
new file mode 100644
index 0000000..295162d
--- /dev/null
+++ b/app/src/main/java/com/example/accountbook/BehaviorCalendar2.kt
@@ -0,0 +1,91 @@
+package com.example.accountbook
+
+import android.content.Context
+import android.util.AttributeSet
+import android.util.Log
+import android.view.View
+import androidx.coordinatorlayout.widget.CoordinatorLayout
+import androidx.core.view.ViewCompat
+import androidx.recyclerview.widget.RecyclerView
+import com.example.accountbook.calendar.CalendarDateView
+import com.example.accountbook.calendar.CalendarView
+import com.google.android.material.appbar.AppBarLayout
+import com.google.android.material.floatingactionbutton.FloatingActionButton
+
+class BehaviorCalendar2(context: Context?, attrs: AttributeSet?) : CoordinatorLayout.Behavior(context, attrs) {
+ override fun layoutDependsOn(
+ parent: CoordinatorLayout,
+ child: View,
+ dependency: View
+ ): Boolean {
+ if ((child.tag as? View) != null && (child.tag as View).id == R.id.test2) {
+
+ } else {
+ if(child.id == R.id.test) child.tag = child.findViewById(R.id.test2)
+ }
+ return if (child.tag != null) {
+ Log.d("BehaviorCalendar777", "layoutDependsOn $child")
+ true
+ } else {
+ false
+ }
+ }
+
+ override fun onDependentViewChanged(
+ parent: CoordinatorLayout,
+ child: View,
+ dependency: View
+ ): Boolean {
+ // parent: CoordinatorLayout
+ // child: 이벤트를 받아 변경될 뷰
+ // dependency: 의존하고 있는 다른 뷰?
+ Log.d("BehaviorCalendar333", "child: $child")
+ Log.d("BehaviorCalendar333", "depend: $dependency")
+ return true
+ }
+
+ override fun onDependentViewRemoved(
+ parent: CoordinatorLayout,
+ child: View,
+ dependency: View
+ ) {
+ super.onDependentViewRemoved(parent, child, dependency)
+ Log.d("BehaviorCalendar444", "$child")
+ Log.d("BehaviorCalendar444", "$dependency")
+ }
+
+ override fun onStartNestedScroll(
+ coordinatorLayout: CoordinatorLayout,
+ child: View,
+ directTargetChild: View,
+ target: View,
+ axes: Int,
+ type: Int
+ ): Boolean {
+ Log.d("BehaviorCalendar555", "SCROLL_AXIS_VERTICAL")
+ return axes == ViewCompat.SCROLL_AXIS_VERTICAL
+ }
+
+ var dyDirectionSum = 0
+ override fun onNestedPreScroll(
+ coordinatorLayout: CoordinatorLayout,
+ child: View,
+ target: View,
+ dx: Int,
+ dy: Int,
+ consumed: IntArray,
+ type: Int
+ ) {
+ (child.tag as? View)?.let {
+ it.y += 2
+ Log.d("BehaviorCalendar999", "onNestedPreScroll")
+ }
+// if ((dy > 0 && dyDirectionSum < 0) || (dy < 0 && dyDirectionSum > 0)) {
+// }
+// if (dy > 10) {
+// child.y = 90f
+// } else {
+// child.y = 0f
+// }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/accountbook/BehaviorCalendarTop.kt b/app/src/main/java/com/example/accountbook/BehaviorCalendarTop.kt
new file mode 100644
index 0000000..84123f1
--- /dev/null
+++ b/app/src/main/java/com/example/accountbook/BehaviorCalendarTop.kt
@@ -0,0 +1,42 @@
+package com.example.accountbook
+
+import android.content.Context
+import android.util.AttributeSet
+import android.util.DisplayMetrics
+import android.util.Log
+import android.view.View
+import android.widget.TableLayout
+import androidx.coordinatorlayout.widget.CoordinatorLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.example.accountbook.calendar.CalendarDateView
+import com.example.accountbook.calendar.CalendarView
+import com.google.android.material.appbar.AppBarLayout
+import com.google.android.material.floatingactionbutton.FloatingActionButton
+
+class BehaviorCalendarTop(context: Context?, attrs: AttributeSet?) : CoordinatorLayout.Behavior(context, attrs) {
+ override fun onDependentViewChanged(
+ parent: CoordinatorLayout,
+ child: TableLayout,
+ dependency: View
+ ): Boolean {
+ // parent: CoordinatorLayout
+ // child: 이벤트를 받아 변경될 뷰
+ // dependency: 의존하고 있는 다른 뷰?
+ val height = 30 * (parent.resources.displayMetrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT)
+ Log.d("", "$child")
+ Log.d("BehaviorCalendarTop", "onDependentViewChanged $dependency")
+ child.top = dependency.top - height
+ child.bottom = dependency.top
+ return false
+ }
+
+ override fun layoutDependsOn(
+ parent: CoordinatorLayout,
+ child: TableLayout,
+ dependency: View
+ ): Boolean {
+ Log.d("BehaviorCalendar", "layoutDependsOn $dependency")
+ return dependency.id == R.id.list_table
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/accountbook/BehaviorCalendart.kt b/app/src/main/java/com/example/accountbook/BehaviorCalendart.kt
new file mode 100644
index 0000000..90dade6
--- /dev/null
+++ b/app/src/main/java/com/example/accountbook/BehaviorCalendart.kt
@@ -0,0 +1,39 @@
+package com.example.accountbook
+
+import android.content.Context
+import android.util.AttributeSet
+import android.util.Log
+import android.view.View
+import android.widget.ImageView
+import androidx.annotation.NonNull
+import androidx.coordinatorlayout.widget.CoordinatorLayout
+import com.example.accountbook.calendar.CalendarDateView
+import com.google.android.material.appbar.AppBarLayout
+import com.google.android.material.floatingactionbutton.FloatingActionButton
+
+class BehaviorCalendart(context: Context?, attrs: AttributeSet?) : CoordinatorLayout.Behavior(context, attrs) {
+ override fun onDependentViewChanged(
+ parent: CoordinatorLayout,
+ child: FloatingActionButton,
+ dependency: View
+ ): Boolean {
+ // parent: CoordinatorLayout
+ // child: 이벤트를 받아 변경될 뷰
+ // dependency: 의존하고 있는 다른 뷰?
+ child.y = 0f
+
+ Log.d("", "$child")
+ Log.d("BehaviorCalendar", "$dependency")
+ return false
+ }
+
+ override fun layoutDependsOn(
+ parent: CoordinatorLayout,
+ child: FloatingActionButton,
+ dependency: View
+ ): Boolean {
+ Log.d("BehaviorCalendar", "layoutDependsOn $dependency")
+ return dependency is AppBarLayout
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/accountbook/FirstFragment.kt b/app/src/main/java/com/example/accountbook/FirstFragment.kt
index 7e3f24e..f311f21 100644
--- a/app/src/main/java/com/example/accountbook/FirstFragment.kt
+++ b/app/src/main/java/com/example/accountbook/FirstFragment.kt
@@ -1,29 +1,35 @@
package com.example.accountbook
+import android.os.Build
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.annotation.RequiresApi
import androidx.navigation.fragment.findNavController
+import androidx.recyclerview.widget.RecyclerView
+import androidx.viewbinding.ViewBinding
+import com.example.accountbook.calendar.CalendarAdapter2
+import com.example.accountbook.calendar.CalendarBean
+import com.example.accountbook.calendar.CalendarFactory
+import com.example.accountbook.calendar.CalendarUtil
import com.example.accountbook.databinding.FragmentFirstBinding
+import java.util.Date
/**
* A simple [Fragment] subclass as the default destination in the navigation.
*/
-class FirstFragment : Fragment() {
+class FirstFragment(layoutId: Int): Fragment(layoutId) {
private var _binding: FragmentFirstBinding? = null
- // This property is only valid between onCreateView and
- // onDestroyView.
private val binding get() = _binding!!
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
-
_binding = FragmentFirstBinding.inflate(inflater, container, false)
return binding.root
@@ -31,7 +37,6 @@ class FirstFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
-
// binding.buttonFirst.setOnClickListener {
// findNavController().navigate(R.id.action_FirstFragment_to_SecondFragment)
// }
diff --git a/app/src/main/java/com/example/accountbook/MainActivity.kt b/app/src/main/java/com/example/accountbook/MainActivity.kt
index d179de7..6f1ed6a 100644
--- a/app/src/main/java/com/example/accountbook/MainActivity.kt
+++ b/app/src/main/java/com/example/accountbook/MainActivity.kt
@@ -1,7 +1,10 @@
package com.example.accountbook
import android.content.Intent
+import android.graphics.Color
import android.os.Bundle
+import android.util.Log
+import android.view.LayoutInflater
import com.google.android.material.snackbar.Snackbar
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.findNavController
@@ -10,35 +13,110 @@ import androidx.navigation.ui.navigateUp
import androidx.navigation.ui.setupActionBarWithNavController
import android.view.Menu
import android.view.MenuItem
+import android.view.View
+import android.view.ViewGroup
+import androidx.constraintlayout.widget.ConstraintLayout
+import androidx.fragment.app.Fragment
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
import com.example.accountbook.activity.ActivityCalendar
+import com.example.accountbook.activity.ActivityWriter
+import com.example.accountbook.adapter.AdapterTable
+import com.example.accountbook.adapter.SampleAdapter
+import com.example.accountbook.calendar.CalendarAdapter
+import com.example.accountbook.calendar.CalendarBean
+import com.example.accountbook.calendar.CalendarViewFragmentAdapter
+import com.example.accountbook.calendar.CalendarViewPagerAdapter
+import com.example.accountbook.calendar2.example.ActivityCalendarEx
import com.example.accountbook.databinding.ActivityMainBinding
+import com.example.accountbook.databinding.FragmentCalendarBinding
+import com.example.accountbook.databinding.ItemCalendarBinding
+import com.example.accountbook.databinding.TempActivityMainBinding
+import com.example.accountbook.fragment.FragCalI1
+import com.example.accountbook.fragment.FragmentCalendar
-class MainActivity : AppCompatActivity() {
+class MainActivity: AppCompatActivity() {
private lateinit var appBarConfiguration: AppBarConfiguration
private lateinit var binding: ActivityMainBinding
+ private var adapterCalendar: CalendarAdapter? = null
+ lateinit var bindItem: ItemCalendarBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- binding = ActivityMainBinding.inflate(layoutInflater)
- setContentView(binding.root)
+ binding = ActivityMainBinding.inflate(layoutInflater) // 뷰 init
+ setContentView(binding.root) // activity에 뷰 연결하기
+// setSupportActionBar(binding.toolbar) // activity actionbar 연결하기
- setSupportActionBar(binding.toolbar)
+// binding2 = TempActivityMainBinding.inflate(layoutInflater) // 뷰 init
+// setContentView(binding2.root) // activity에 뷰 연결하기
+// setSupportActionBar(binding2.toolbar) // activity actionbar 연결하기
- val navController = findNavController(R.id.nav_host_fragment_content_main)
- appBarConfiguration = AppBarConfiguration(navController.graph)
- setupActionBarWithNavController(navController, appBarConfiguration)
+// // NavHostFragment로 NavController 가져오기
+// val navController = findNavController(R.id.nav_host_fragment_content_main)
+// // 최상위 뷰에 뒤로가기 버튼 숨기기
+// appBarConfiguration = AppBarConfiguration(navController.graph)
+// // NavController와 ActionBar를 통합
+// // 뒤로가기 버튼이 생기고 제목이 업데이트 된다.
+// setupActionBarWithNavController(navController, appBarConfiguration)
+//
+//
+// binding.fab.setOnClickListener { view ->
+// Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
+// .setAction("Action", null)
+// .setAnchorView(R.id.fab).show()
+// }
- binding.fab.setOnClickListener { view ->
- Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
- .setAction("Action", null)
- .setAnchorView(R.id.fab).show()
- }
- startActivity(Intent(applicationContext, ActivityCalendar::class.java))
+// binding.listTable.adapter = SampleAdapter().apply { notifySample() }
+// binding.listTable.addOnScrollListener(
+// object : RecyclerView.OnScrollListener() {
+// override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
+// super.onScrolled(recyclerView, dx, dy)
+// val layoutManager = recyclerView.layoutManager as LinearLayoutManager
+// val layoutParms = binding.calendar.layoutParams
+// if (layoutManager.findFirstVisibleItemPosition() == 0) {
+// Log.d("listTable", "it' on the 1st position.")
+// // 뷰 높이
+// layoutParms?.height = 300
+// // 달력의 열
+// // binding.calendarDateView.changeRow(1)
+// } else {
+// // 뷰 높이
+// layoutParms?.height = 800
+// // 달력의 열
+// // binding.calendarDateView.changeRow(6)
+// }
+// binding.calendar.layoutParams = layoutParms
+// }
+// }
+// )
+
+ // view pager의 레이아웃에 calendarview를 담을 recyclerview가 필요한지 알기 어렵다
+ // view pager의 레이아웃도 binding이 필요하다. viewHolder가 두번 있어야한다.
+ // 따라서 view pager 레이아웃에 쓸 데이터도 필요할 수 도 있다.
+// val fcb = FragmentCalendarBinding.inflate(layoutInflater, binding.root, false)
+// val icb = ItemCalendarBinding.inflate(layoutInflater)
+//
+// bindItem = ItemCalendarBinding.inflate(layoutInflater, binding.root, false)
+// binding.pager.adapter = object : CalendarViewFragmentAdapter(this){
+// override fun getFragment(): FragmentCalendar {
+// return FragCalI1(R.layout.fragment_calendar, bindItem.root)
+// }
+// }
}
+ override fun onStart() {
+ super.onStart()
+ startActivity(Intent(this, ActivityCalendarEx::class.java))
+ }
+
+ override fun onResume() {
+ super.onResume()
+ }
+
+
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.menu_main, menu)
@@ -60,4 +138,41 @@ class MainActivity : AppCompatActivity() {
return navController.navigateUp(appBarConfiguration)
|| super.onSupportNavigateUp()
}
+
+// private fun initCalendar() {
+// Log.i("FragmentCalendar","initView")
+// adapterCalendar = object: CalendarAdapter {
+// override fun getView(
+// convertView: View?,
+// parentView: ViewGroup?,
+// bean: CalendarBean?
+// ): View {
+// Log.i("FragmentCalendar","getView")
+//
+// var bindItem : ItemCalendarBinding? = null
+// if (convertView == null) {
+// bindItem = ItemCalendarBinding.inflate(LayoutInflater.from(parentView?.context))
+// } else {
+// bindItem = ItemCalendarBinding.bind(convertView)
+// }
+// bindItem.day.apply {
+// this.text = bean?.day.toString()
+// if (bean?.monthFlag != 0) {
+// this.setTextColor(Color.WHITE)
+// } else {
+// this.setTextColor(Color.BLACK)
+// }
+// }
+//
+//// bindItem.root.setOnLongClickListener{ it ->
+//// startActivity(Intent(context, ActivityWriter::class.java))
+//// return@setOnLongClickListener true
+//// }
+// return convertView ?: bindItem.root
+// }
+//
+//// override fun hasChildView() = binding.calendarDateView.views.size > 0
+// }
+// binding.calendarDateView.setAdapter(adapterCalendar)
+// }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/accountbook/activity/ActivityCalendar.kt b/app/src/main/java/com/example/accountbook/activity/ActivityCalendar.kt
index efa49d5..e62bf4c 100644
--- a/app/src/main/java/com/example/accountbook/activity/ActivityCalendar.kt
+++ b/app/src/main/java/com/example/accountbook/activity/ActivityCalendar.kt
@@ -21,7 +21,7 @@ import com.example.accountbook.fragment.FragmentTable
class ActivityCalendar: AppCompatActivity(){
private lateinit var bind: ActivityCalendarBinding
- val fragmentCalendar: FragmentCalendar by lazy { FragmentCalendar() }
+// val fragmentCalendar: FragmentCalendar by lazy { FragmentCalendar() }
val fragmentTable: FragmentTable by lazy { FragmentTable() }
override fun onCreate(savedInstanceState: Bundle?) {
@@ -30,20 +30,15 @@ class ActivityCalendar: AppCompatActivity(){
bind = ActivityCalendarBinding.inflate(this.layoutInflater)
// setting content view
setContentView(bind.root)
- bind.chkShift.setOnClickListener() { _ ->
- // 화면 전환
- supportFragmentManager.beginTransaction()
- .replace(
- R.id.fragment_box,
- if (bind.chkShift.isChecked) fragmentTable else fragmentCalendar
- )
- .commit()
- }
-
- supportFragmentManager.beginTransaction()
- .replace(
- R.id.fragment_box, fragmentCalendar
- )
- .commit()
+// bind.chkShift.setOnClickListener() { _ -> // 화면 전환
+// supportFragmentManager.beginTransaction().apply {
+// if (bind.chkShift.isChecked) {
+// show(fragmentTable)
+// } else {
+// hide(fragmentTable)
+// }
+// }.commit();
+// }
+// supportFragmentManager.beginTransaction().replace(R.id.fragment_box, fragmentCalendar).add(R.id.fragment_box, fragmentTable).hide(fragmentTable).commit()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/accountbook/adapter/AdapterTable.kt b/app/src/main/java/com/example/accountbook/adapter/AdapterTable.kt
index c2a3042..78e6590 100644
--- a/app/src/main/java/com/example/accountbook/adapter/AdapterTable.kt
+++ b/app/src/main/java/com/example/accountbook/adapter/AdapterTable.kt
@@ -8,7 +8,7 @@ import android.widget.ArrayAdapter
import com.example.accountbook.R
import com.example.accountbook.databinding.ItemTableBinding
-class AdapterTable(context: Context, private val data: Array):
+class AdapterTable(context: Context, private val data: List):
ArrayAdapter(context, R.layout.item_table, data) {
private lateinit var bind:ItemTableBinding
diff --git a/app/src/main/java/com/example/accountbook/adapter/SampleAdapter.kt b/app/src/main/java/com/example/accountbook/adapter/SampleAdapter.kt
new file mode 100644
index 0000000..c3957ab
--- /dev/null
+++ b/app/src/main/java/com/example/accountbook/adapter/SampleAdapter.kt
@@ -0,0 +1,37 @@
+package com.example.accountbook.adapter
+
+import android.annotation.SuppressLint
+import android.util.Log
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import com.example.accountbook.R
+
+
+class SampleAdapter : RecyclerView.Adapter() {
+
+ private val items = mutableListOf()
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = SampleViewHolder(parent)
+
+ override fun onBindViewHolder(holder: SampleViewHolder, position: Int) {
+ Log.d("SampleAdapter", "position: $position")
+ }
+
+ override fun getItemCount() = items.size.also {
+ Log.d("SampleAdapter", "items.size: ${items.size}")
+ }
+
+ fun notifySample() {
+ items.clear()
+ (1..60).forEach {
+ items.add(it)
+ }
+ Log.d("SampleAdapter", "items.size: ${items.size}")
+ notifyDataSetChanged()
+ }
+
+ class SampleViewHolder(parent: ViewGroup) : RecyclerView.ViewHolder(
+ LayoutInflater.from(parent.context).inflate(R.layout.item_table, parent, false)
+ )
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/accountbook/calendar/CalendarAdapter2.kt b/app/src/main/java/com/example/accountbook/calendar/CalendarAdapter2.kt
new file mode 100644
index 0000000..33d7c91
--- /dev/null
+++ b/app/src/main/java/com/example/accountbook/calendar/CalendarAdapter2.kt
@@ -0,0 +1,37 @@
+package com.example.accountbook.calendar
+
+import android.util.Log
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import androidx.recyclerview.widget.RecyclerView.ViewHolder
+
+
+abstract class CalendarAdapter2(private val layout: View, private val listBeans: List): RecyclerView.Adapter() {
+ // input
+ abstract fun bindViewHolder(holder: CalendarAdapter2.ViewHolderCalendar2, bean: CalendarBean)
+ override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
+ super.onAttachedToRecyclerView(recyclerView)
+ Log.d("CalendarAdapter2", "onAttachedToRecyclerView recyclerview: $recyclerView")
+ }
+
+ // view holder
+ class ViewHolderCalendar2(view: View) : RecyclerView.ViewHolder(view)
+
+
+ // extension RecyclerView
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CalendarAdapter2.ViewHolderCalendar2 {
+ Log.d("CalendarAdapter2", "onCreateViewHolder")
+ return ViewHolderCalendar2(this.layout)
+ }
+
+ override fun getItemCount(): Int {
+ Log.d("CalendarAdapter2", "getItemCount size: ${listBeans.size}")
+ return listBeans.size
+ }
+
+ override fun onBindViewHolder(holder: CalendarAdapter2.ViewHolderCalendar2, position: Int) {
+ Log.d("CalendarAdapter2", "onBindViewHolder")
+ bindViewHolder(holder, listBeans[position])
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/accountbook/calendar/CalendarDateView.kt b/app/src/main/java/com/example/accountbook/calendar/CalendarDateView.kt
index 670caa4..3b6ca3a 100644
--- a/app/src/main/java/com/example/accountbook/calendar/CalendarDateView.kt
+++ b/app/src/main/java/com/example/accountbook/calendar/CalendarDateView.kt
@@ -19,9 +19,9 @@ class CalendarDateView(context: Context, attrs: AttributeSet?):
private var mCaledarLayoutChangeListener: CalendarTopViewChangeListener? = null
private var onItemClickListener: CalendarView.OnItemClickListener? = null
private val cache: LinkedList = LinkedList()
- private val MAXCOUNT = 6
private var row = 6
private var mAdapter: CalendarAdapter? = null
+ private var mAdapterPager: PagerAdapter? =null
override var itemHeight = 0
private set
@@ -40,7 +40,6 @@ class CalendarDateView(context: Context, attrs: AttributeSet?):
val a = context.obtainStyledAttributes(attrs, R.styleable.CalendarDateView)
row = a.getInteger(R.styleable.CalendarDateView_cbd_calendar_row, 6)
a.recycle()
-
}
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
@@ -60,7 +59,7 @@ class CalendarDateView(context: Context, attrs: AttributeSet?):
private fun initialize() {
val dateArr: IntArray = CalendarUtil.getYMD(Date())
- setAdapter(object : PagerAdapter() {
+ mAdapterPager = object: PagerAdapter() {
override fun getCount(): Int {
// Log.i(this@CalendarDateView::class.java.simpleName, "container >>> setAdapter getCount")
return Int.MAX_VALUE
@@ -99,7 +98,8 @@ class CalendarDateView(context: Context, attrs: AttributeSet?):
cache.addLast(`object` as CalendarView)
views.remove(position)
}
- })
+ }
+ setAdapter(mAdapterPager)
addOnPageChangeListener(object: SimpleOnPageChangeListener() {
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
@@ -135,4 +135,8 @@ class CalendarDateView(context: Context, attrs: AttributeSet?):
override fun setCalendarTopViewChangeListener(listener: CalendarTopViewChangeListener?) {
mCaledarLayoutChangeListener = listener
}
+
+ fun changeRow(row: Int) {
+ this.row = row
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/accountbook/calendar/CalendarFactory.kt b/app/src/main/java/com/example/accountbook/calendar/CalendarFactory.kt
index ac15d4c..c9d063b 100644
--- a/app/src/main/java/com/example/accountbook/calendar/CalendarFactory.kt
+++ b/app/src/main/java/com/example/accountbook/calendar/CalendarFactory.kt
@@ -42,7 +42,13 @@ object CalendarFactory {
list.add(bean)
}
Log.e("TIME CHECK" , "fun getMonthOfDayList END")
+
+// val resultList: MutableList = ArrayList()
+// for (i in 0 until 7) {
+// resultList.add(list[i])
+// }
return list
+// return resultList
}
fun getCalendarBean(year: Int, month: Int, day: Int): CalendarBean {
diff --git a/app/src/main/java/com/example/accountbook/calendar/CalendarView.kt b/app/src/main/java/com/example/accountbook/calendar/CalendarView.kt
index 3fc58c7..b513586 100644
--- a/app/src/main/java/com/example/accountbook/calendar/CalendarView.kt
+++ b/app/src/main/java/com/example/accountbook/calendar/CalendarView.kt
@@ -43,7 +43,14 @@ class CalendarView : ViewGroup {
}
fun setData(data: List?, isToday: Boolean) {
- this.data = data
+ var li: MutableList = ArrayList()
+ for (i in 0 until 7) {
+ if (data != null) {
+ li.add(data[i])
+ }
+ }
+ this.data = li
+// this.data = data
this.isToday = isToday
setItem()
requestLayout()
diff --git a/app/src/main/java/com/example/accountbook/calendar/CalendarViewPagerAdapter.kt b/app/src/main/java/com/example/accountbook/calendar/CalendarViewPagerAdapter.kt
new file mode 100644
index 0000000..31de050
--- /dev/null
+++ b/app/src/main/java/com/example/accountbook/calendar/CalendarViewPagerAdapter.kt
@@ -0,0 +1,78 @@
+package com.example.accountbook.calendar
+
+import android.content.Context
+import android.view.View
+import android.view.ViewGroup
+import androidx.appcompat.app.AppCompatActivity
+import androidx.fragment.app.Fragment
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import androidx.viewpager.widget.PagerAdapter
+import androidx.viewpager2.adapter.FragmentStateAdapter
+import com.example.accountbook.MainActivity
+import com.example.accountbook.R
+import com.example.accountbook.fragment.FragCalI1
+import com.example.accountbook.fragment.FragmentCalendar
+import java.util.Date
+
+//abstract
+abstract class CalendarViewFragmentAdapter(activity: AppCompatActivity): FragmentStateAdapter(activity) {
+ private lateinit var calendarData: List
+
+
+ override fun createFragment(position: Int): Fragment {
+ return getFragment().setCalendarData(this.getCalendarData(position))
+ }
+
+ override fun getItemCount(): Int
+ = Int.MAX_VALUE
+
+
+ protected fun getCalendarData(position: Int): List
+ = CalendarUtil.getYMD(Date()).run {
+ return CalendarFactory.getMonthOfDayList(
+ this[0],
+ this[1] + position - Int.MAX_VALUE / 2
+ )
+ }
+
+ abstract fun getFragment(): FragmentCalendar
+}
+
+abstract class CalendarViewPagerAdapter (val pageView: View, val calendarView: RecyclerView, val dateItemView: View, val context: Context): RecyclerView.Adapter() {
+ // member
+ private val row = 7
+ // input
+ abstract fun bindDateViewHolder(holder: RecyclerView.ViewHolder, bean: CalendarBean)
+ abstract fun bindCalendarViewHolder(holder: RecyclerView.ViewHolder, listBeans: List)
+
+
+ // view Holder
+ class PageViewHolder(view: View): RecyclerView.ViewHolder(view)
+
+
+ // extension RecyclerView Adapter
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder
+ = PageViewHolder(pageView)
+
+ override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
+ // calendar date
+ val dateArr: IntArray = CalendarUtil.getYMD(Date())
+ val data = CalendarFactory.getMonthOfDayList(
+ dateArr[0],
+ dateArr[1] + position - Int.MAX_VALUE / 2
+ )
+
+ // etc
+ bindCalendarViewHolder(holder, data)
+// val isToday: Boolean = position == Int.MAX_VALUE / 2
+
+ calendarView.adapter = object : CalendarAdapter2(dateItemView, data) {
+ override fun bindViewHolder(holder: CalendarAdapter2.ViewHolderCalendar2, bean: CalendarBean) {
+ // 날짜 뷰
+ bindDateViewHolder(holder, bean)
+ }
+ }
+ calendarView.layoutManager = GridLayoutManager(context, row)
+ }
+}
diff --git a/app/src/main/java/com/example/accountbook/calendar2/CalendarFragment.kt b/app/src/main/java/com/example/accountbook/calendar2/CalendarFragment.kt
new file mode 100644
index 0000000..92e3905
--- /dev/null
+++ b/app/src/main/java/com/example/accountbook/calendar2/CalendarFragment.kt
@@ -0,0 +1,18 @@
+package com.example.accountbook.calendar2
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import androidx.viewbinding.ViewBinding
+
+
+// life cycle, calendar data binding
+abstract class CalendarFragment: Fragment() {
+ // member
+
+
+
+ // Fragment
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/accountbook/calendar2/CalendarLayout.kt b/app/src/main/java/com/example/accountbook/calendar2/CalendarLayout.kt
new file mode 100644
index 0000000..cbeb642
--- /dev/null
+++ b/app/src/main/java/com/example/accountbook/calendar2/CalendarLayout.kt
@@ -0,0 +1,119 @@
+package com.example.accountbook.calendar2
+
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.util.AttributeSet
+import android.util.Log
+import android.view.View
+import android.view.ViewGroup
+import androidx.constraintlayout.widget.ConstraintLayout
+import androidx.constraintlayout.widget.ConstraintSet
+import androidx.core.view.children
+import androidx.core.view.forEach
+import androidx.recyclerview.widget.RecyclerView
+import androidx.viewpager2.widget.ViewPager2
+import androidx.viewpager2.widget.ViewPager2.Orientation
+import com.example.accountbook.R
+
+interface CalendarLayoutListener {
+ fun onCreatedViewPager()
+}
+
+class CalendarLayout: ConstraintLayout {
+ constructor(context: Context) : super(context) {
+ setAttr(null)
+ }
+ constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
+ setAttr(attrs)}
+ constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
+ context,
+ attrs,
+ defStyleAttr
+ ) {
+ setAttr(attrs)}
+ constructor(
+ context: Context,
+ attrs: AttributeSet?,
+ defStyleAttr: Int,
+ defStyleRes: Int
+ ) : super(context, attrs, defStyleAttr, defStyleRes) {
+ setAttr(attrs)
+ }
+
+
+ // member
+ private var attrs: AttributeSet? = null
+ private var pagerLayoutId = -1
+ var viewPager: ViewPager2? = null
+ var listener: CalendarLayoutListener? = null
+
+
+ // ViewGroup
+ override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) {
+ Log.d("CalendarLayout", "onLayout >>>")
+ super.onLayout(changed, left, top, right, bottom)
+ this.id = ConstraintLayout.generateViewId()
+ Log.d("CalendarLayout", "CalendarLayout.id: $this.id")
+
+ if (!isInEditMode) {
+ // child로 viewPager 이외에는 모두 숨김처리
+ Log.d("CalendarLayout", "childCount: $childCount")
+ this.children.forEach { child ->
+ Log.d("CalendarLayout", "child: $child")
+ if (child.id == viewPager?.id) {
+ return@forEach
+ }
+ this.removeView(child)
+ }
+
+ if (viewPager == null) {
+ addCalendarPager()
+ listener?.onCreatedViewPager()
+ } else {
+ Log.e("CalendarLayout", "viewPager already exist.")
+ }
+ }
+
+ Log.d("CalendarLayout", "onLayout <<<")
+ }
+
+
+ // fun
+ private fun setAttr(attrs: AttributeSet?) {
+ this.attrs = attrs
+// context.obtainStyledAttributes(attrs, R.styleable.CalendarLayout).run {
+// pagerLayoutId = this.getResourceId(R.styleable.CalendarLayout_pager_layout, -1)
+// this.recycle()
+// }
+ }
+
+ private fun addCalendarPager() {
+ // viewPager to add
+ viewPager = ViewPager2(this.context).apply {
+ this.id = ViewPager2.generateViewId()
+ this.setBackgroundColor(Color.parseColor("#cd5c5c"))
+ this.orientation = ViewPager2.ORIENTATION_HORIZONTAL
+ }
+ // do
+ this.addView(
+ viewPager,
+ ConstraintLayout.LayoutParams(
+ ConstraintLayout.LayoutParams.MATCH_PARENT,
+ ConstraintLayout.LayoutParams.MATCH_PARENT,
+ )
+ )
+ // constraint of viewPager
+ ConstraintSet().run {
+ this.clone(this@CalendarLayout)
+ this.connect(
+ viewPager!!.id,
+ ConstraintSet.TOP,
+ this@CalendarLayout.id,
+ ConstraintSet.TOP,
+ 0
+ )
+ this.applyTo(this@CalendarLayout)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/accountbook/calendar2/CalendarManager.kt b/app/src/main/java/com/example/accountbook/calendar2/CalendarManager.kt
new file mode 100644
index 0000000..dc1908f
--- /dev/null
+++ b/app/src/main/java/com/example/accountbook/calendar2/CalendarManager.kt
@@ -0,0 +1,44 @@
+package com.example.accountbook.calendar2
+
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentActivity
+import androidx.fragment.app.FragmentManager
+import androidx.lifecycle.Lifecycle
+import com.example.accountbook.R
+
+class CalendarManager {
+ constructor(fragmentActivity: FragmentActivity) {
+ this.fragmentActivity = fragmentActivity
+ }
+ constructor(fragment: Fragment) {
+ this.fragment = fragment
+ }
+ constructor(fragmentManager: FragmentManager, lifecycle: Lifecycle) {
+ this.fragmentManager = fragmentManager
+ this.lifecycle = lifecycle
+ }
+
+
+ // member
+ lateinit var fragmentActivity: FragmentActivity
+ lateinit var fragment: Fragment
+ lateinit var fragmentManager: FragmentManager
+ lateinit var lifecycle: Lifecycle
+
+
+ // fun
+ fun getCalendarAdapter(fragmentActivity: FragmentActivity) {
+ CalendarPagerAdapter(fragmentActivity)
+ }
+ fun getCalendarAdapter(fragment: Fragment) {
+ CalendarPagerAdapter(fragment)
+ }
+ fun getCalendarAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle) {
+ CalendarPagerAdapter(fragmentManager, lifecycle)
+ }
+
+
+// viewPager?.adapter = CalendarPagerAdapter(this).apply {
+// this.layoutId = R.layout.calendar_pager_example
+// }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/accountbook/calendar2/CalendarPagerAdapter.kt b/app/src/main/java/com/example/accountbook/calendar2/CalendarPagerAdapter.kt
new file mode 100644
index 0000000..af33ac9
--- /dev/null
+++ b/app/src/main/java/com/example/accountbook/calendar2/CalendarPagerAdapter.kt
@@ -0,0 +1,45 @@
+package com.example.accountbook.calendar2
+
+import android.util.Log
+import android.view.LayoutInflater
+import android.view.View
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentActivity
+import androidx.fragment.app.FragmentManager
+import androidx.lifecycle.Lifecycle
+import androidx.viewpager2.adapter.FragmentStateAdapter
+import androidx.viewpager2.adapter.FragmentViewHolder
+
+class CalendarPagerAdapter : FragmentStateAdapter {
+ constructor(fragmentActivity: FragmentActivity) : super(fragmentActivity)
+ constructor(fragment: Fragment) : super(fragment)
+ constructor(fragmentManager: FragmentManager, lifecycle: Lifecycle) : super(
+ fragmentManager,
+ lifecycle
+ )
+
+
+ // member
+ var layoutId: Int? = null
+
+ override fun onBindViewHolder(
+ holder: FragmentViewHolder,
+ position: Int,
+ payloads: MutableList
+ ) {
+ super.onBindViewHolder(holder, position, payloads)
+ }
+ // FragmentStateAdapter
+ override fun getItemCount(): Int = Int.MAX_VALUE
+
+ override fun createFragment(position: Int): Fragment {
+ Log.d("CalendarPagerAdapter", "createFragment layoutId: ${layoutId}")
+ return if (layoutId != null) Fragment(layoutId!!) else Fragment()
+ }
+
+ fun getTopView(position: Int, inflater: LayoutInflater) : View? = null
+ fun getBottomView(position: Int, inflater: LayoutInflater) : View? = null
+ fun drawCalendar(position: Int) = true
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/accountbook/calendar2/example/ActivityCalendarEx.kt b/app/src/main/java/com/example/accountbook/calendar2/example/ActivityCalendarEx.kt
new file mode 100644
index 0000000..40bb59d
--- /dev/null
+++ b/app/src/main/java/com/example/accountbook/calendar2/example/ActivityCalendarEx.kt
@@ -0,0 +1,41 @@
+package com.example.accountbook.calendar2.example
+
+import android.os.Bundle
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import com.example.accountbook.R
+import com.example.accountbook.calendar2.CalendarLayoutListener
+import com.example.accountbook.calendar2.CalendarManager
+import com.example.accountbook.calendar2.CalendarPagerAdapter
+import com.example.accountbook.databinding.CalendarActivityExampleBinding
+
+class ActivityCalendarEx: AppCompatActivity() {
+ // member
+ private var bind: CalendarActivityExampleBinding? = null
+
+
+ // AppCompatActivity
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ bind = CalendarActivityExampleBinding.inflate(this.layoutInflater)
+ bind?.let {
+ setContentView(it.root)
+ it.calendarLayoutEx.listener = object: CalendarLayoutListener {
+ override fun onCreatedViewPager() {
+ it.calendarLayoutEx.viewPager?.adapter = CalendarPagerAdapter(this@ActivityCalendarEx).apply {
+ this.layoutId = R.layout.calendar_pager_example
+ }
+ }
+ }
+ it.root.setOnClickListener{
+
+ }
+ }
+
+ }
+
+ override fun onStart() {
+ super.onStart()
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/accountbook/fragment/FragmentCalendar.kt b/app/src/main/java/com/example/accountbook/fragment/FragmentCalendar.kt
index 50ead5e..badcb89 100644
--- a/app/src/main/java/com/example/accountbook/fragment/FragmentCalendar.kt
+++ b/app/src/main/java/com/example/accountbook/fragment/FragmentCalendar.kt
@@ -1,113 +1,132 @@
package com.example.accountbook.fragment
import android.content.Context
-import android.content.Intent
-import android.graphics.Color
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
-import com.example.accountbook.activity.ActivityWriter
-import com.example.accountbook.calendar.CalendarAdapter
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import androidx.recyclerview.widget.RecyclerView.ViewHolder
+import com.example.accountbook.R
+import com.example.accountbook.calendar.CalendarAdapter2
import com.example.accountbook.calendar.CalendarBean
import com.example.accountbook.databinding.FragmentCalendarBinding
import com.example.accountbook.databinding.ItemCalendarBinding
-class FragmentCalendar: Fragment() {
- private lateinit var bind: FragmentCalendarBinding
+
+abstract class FragmentCalendar(val layoutId: Int, val dateView: View) : Fragment() {
+ // member
+ private val row = 7
+ // var layoutId: Int
+// private val root: View
+// get() = getRoot()
+// private var pageData: List? = getPageData()
+ private val recyclerView: RecyclerView
+ get() = getCalendarView()
+// private val dateView: View
+// get() = getDateView()
+
+ private lateinit var calendarData: List
+
+ // page view draw
+// abstract fun getLayoutId(): Int
+// abstract fun getRoot(): View
+
+ // page view data, nullable
+// fun getPageData(): List? {
+// return null
+// }
+
+ abstract fun bindPageView(): View
+
+ // calendarView draw
+ abstract fun getCalendarView(): RecyclerView
+
+ // calendarView ItemView draw
+// abstract fun getDateView(): View
+
+ // calendarView ItemView data
+ fun setCalendarData(data :List): FragmentCalendar {
+ this.calendarData = data
+ return this
+ }
+
+ // calendarView ItemView binding
+ abstract fun bindDateViewHolder(holder: CalendarAdapter2.ViewHolderCalendar2, bean: CalendarBean)
+
+
+ // fragment
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ }
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
- bind = FragmentCalendarBinding.inflate(inflater)
- return bind.root
- }
-
- override fun onStart() {
- super.onStart()
- // init view
- if (bind.calendarDateView.adapter == null) {
- initView()
- }
- // init list
-// initList()
- }
-
- private fun initView() {
- Log.i("FragmentCalendar","initView")
-
- bind.calendarDateView.setAdapter(object: CalendarAdapter {
- override fun getView(
- convertView: View?,
- parentView: ViewGroup?,
- bean: CalendarBean?
- ): View {
- Log.i("FragmentCalendar","getView")
-
- var bindItem : ItemCalendarBinding? = null
- if (convertView == null) {
- bindItem = ItemCalendarBinding.inflate(LayoutInflater.from(parentView?.context))
- } else {
- bindItem = ItemCalendarBinding.bind(convertView)
- }
- bindItem.day.apply {
- this.text = bean?.day.toString()
- if (bean?.monthFlag != 0) {
- this.setTextColor(Color.WHITE)
- } else {
- this.setTextColor(Color.BLACK)
- }
- }
-
- bindItem.root.setOnLongClickListener{ it ->
- startActivity(Intent(context, ActivityWriter::class.java))
- return@setOnLongClickListener true
- }
- return convertView ?: bindItem.root
- }
-
- override fun hasChildView() = bind.calendarDateView.views.size > 0
- })
- }
-
- override fun onAttach(context: Context) {
- super.onAttach(context)
+ Log.d("FragmentCalendar","NOT Working on f1")
+ return inflater.inflate(layoutId, container, false)
}
override fun onResume() {
super.onResume()
+ bindPageView()
+ recyclerView.layoutManager = GridLayoutManager(context, row)
+ val ma = object: CalendarAdapter2(dateView, calendarData) {
+ override fun bindViewHolder(holder: CalendarAdapter2.ViewHolderCalendar2, bean: CalendarBean) {
+ bindDateViewHolder(holder, bean)
+ }
+ }
+ recyclerView.adapter = ma
+ Log.d("FragmentCalendar", "onResume recyclerview: ${recyclerView}")
+ }
+}
+
+class FragCalI1(layoutId: Int, dateView: View) : FragmentCalendar(layoutId, dateView) {
+ private lateinit var bind: FragmentCalendarBinding
+ private lateinit var bindItem: ItemCalendarBinding
+
+// override fun getLayoutId(): Int {
+// return R.layout.fragment_calendar
+// }
+
+// override fun getRoot(): View {
+// TODO("Not yet implemented")
+// }
+
+ override fun bindPageView(): View {
+ Log.d("FragCalI1", "bindPageView")
+ return bind.root
}
-// private fun initList() {
-// bind.list.setAdapter(object : BaseAdapter() {
-// override fun getCount(): Int {
-// Log.i("bindList" , "getCount ")
-// return 100
-// }
-//
-// override fun getItem(position: Int) = null
-//
-// override fun getItemId(position: Int): Long = 0
-//
-// override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
-// Log.i("bindList" , "getView ${position}")
-// var mConvertView: View? = convertView
-// if (mConvertView == null) {
-// mConvertView = LayoutInflater.from(this@ActivityCalendar).inflate(android.R.layout.simple_list_item_1, null)
-// }
-//
-// (mConvertView as TextView).apply {
-// this.text = "item" + position
-// this.setBackgroundColor(Color.RED)
-// }
-//
-// return mConvertView
-// }
-//
-// })
+ override fun getCalendarView(): RecyclerView {
+ Log.d("FragCalI1", "getCalendarView recyclerview: ${bind.calendarDateView}")
+ return bind.calendarDateView
+ }
+
+// override fun getDateView(): View {
+// return bindItem.root
// }
+
+ override fun bindDateViewHolder(holder: CalendarAdapter2.ViewHolderCalendar2, bean: CalendarBean) {
+ Log.d("FragCalI1", "bindDateViewHolder, bean: ${bean}")
+ }
+
+ override fun onAttach(context: Context) {
+ super.onAttach(context)
+ Log.d("onAttach" , "onAttach")
+ }
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ bind = FragmentCalendarBinding.inflate(inflater,container, false)
+ bindItem = ItemCalendarBinding.inflate(inflater, container, false)
+ return super.onCreateView(inflater,container,savedInstanceState)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/accountbook/fragment/FragmentTable.kt b/app/src/main/java/com/example/accountbook/fragment/FragmentTable.kt
index 0772f82..e866138 100644
--- a/app/src/main/java/com/example/accountbook/fragment/FragmentTable.kt
+++ b/app/src/main/java/com/example/accountbook/fragment/FragmentTable.kt
@@ -4,26 +4,28 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import android.widget.ArrayAdapter
import androidx.fragment.app.Fragment
-import com.example.accountbook.R
import com.example.accountbook.adapter.AdapterTable
import com.example.accountbook.databinding.FragmentTableBinding
class FragmentTable: Fragment() {
private lateinit var bind: FragmentTableBinding
- private var li: Array = arrayOf("0", "1")
+ private var li: ArrayList = arrayListOf()
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
+
+ for (i in 0..<50) {
+ li.add(i.toString())
+ }
// view
bind = FragmentTableBinding.inflate(inflater)
// data
setData()
- bind.listTable.adapter = AdapterTable(inflater.context, li)
+ bind.listTable.adapter = AdapterTable(inflater.context, li.toList())
return bind.root
}
diff --git a/app/src/main/res/layout/activity_calendar.xml b/app/src/main/res/layout/activity_calendar.xml
index 46c5f4c..5265382 100644
--- a/app/src/main/res/layout/activity_calendar.xml
+++ b/app/src/main/res/layout/activity_calendar.xml
@@ -8,94 +8,63 @@
android:layout_height="match_parent"
android:orientation="vertical">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+ tools:context=".MainActivity"
+ android:paddingStart="20dp"
+ android:paddingEnd="20dp">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/calendar_activity_example.xml b/app/src/main/res/layout/calendar_activity_example.xml
new file mode 100644
index 0000000..892ff18
--- /dev/null
+++ b/app/src/main/res/layout/calendar_activity_example.xml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/calendar_pager_example.xml b/app/src/main/res/layout/calendar_pager_example.xml
new file mode 100644
index 0000000..3561094
--- /dev/null
+++ b/app/src/main/res/layout/calendar_pager_example.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/frag1.xml b/app/src/main/res/layout/frag1.xml
new file mode 100644
index 0000000..545cdcd
--- /dev/null
+++ b/app/src/main/res/layout/frag1.xml
@@ -0,0 +1,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_base.xml b/app/src/main/res/layout/fragment_base.xml
new file mode 100644
index 0000000..603ff76
--- /dev/null
+++ b/app/src/main/res/layout/fragment_base.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_calendar.xml b/app/src/main/res/layout/fragment_calendar.xml
index 81ce9a4..9550d07 100644
--- a/app/src/main/res/layout/fragment_calendar.xml
+++ b/app/src/main/res/layout/fragment_calendar.xml
@@ -1,65 +1,71 @@
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="wrap_content"
+ android:text="테스트"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -67,16 +73,19 @@
-
+
+
+
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_calendar.xml b/app/src/main/res/layout/item_calendar.xml
index ff989fc..64405b9 100644
--- a/app/src/main/res/layout/item_calendar.xml
+++ b/app/src/main/res/layout/item_calendar.xml
@@ -1,54 +1,55 @@
-
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_table.xml b/app/src/main/res/layout/item_table.xml
index 963a770..a245ec8 100644
--- a/app/src/main/res/layout/item_table.xml
+++ b/app/src/main/res/layout/item_table.xml
@@ -1,7 +1,7 @@
+ android:layout_height="wrap_content">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/attr.xml b/app/src/main/res/values/attr.xml
index 652dd9c..e97ad86 100644
--- a/app/src/main/res/values/attr.xml
+++ b/app/src/main/res/values/attr.xml
@@ -6,4 +6,8 @@
+
+
+
+
\ No newline at end of file