Changement des listes menu et session
This commit is contained in:
parent
d7bade2287
commit
bff62daaec
23 changed files with 279 additions and 226 deletions
|
@ -29,7 +29,6 @@ android {
|
|||
kotlinOptions {
|
||||
jvmTarget = "1.8"
|
||||
}
|
||||
buildToolsVersion = "33.0.1"
|
||||
buildFeatures {
|
||||
viewBinding = true
|
||||
}
|
||||
|
@ -38,16 +37,21 @@ android {
|
|||
dependencies {
|
||||
implementation("androidx.core:core-ktx:1.12.0")
|
||||
implementation("androidx.appcompat:appcompat:1.6.1")
|
||||
implementation("com.google.android.material:material:1.10.0")
|
||||
implementation("com.google.android.material:material:1.11.0")
|
||||
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
|
||||
implementation("androidx.navigation:navigation-fragment-ktx:2.7.5")
|
||||
implementation("androidx.navigation:navigation-ui-ktx:2.7.5")
|
||||
implementation("androidx.annotation:annotation:1.7.0")
|
||||
implementation("androidx.navigation:navigation-fragment-ktx:2.7.6")
|
||||
implementation("androidx.navigation:navigation-ui-ktx:2.7.6")
|
||||
implementation("androidx.annotation:annotation:1.7.1")
|
||||
implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.2")
|
||||
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2")
|
||||
implementation("androidx.legacy:legacy-support-v4:1.0.0")
|
||||
implementation("androidx.recyclerview:recyclerview:1.3.0")
|
||||
implementation("androidx.recyclerview:recyclerview:1.3.2")
|
||||
testImplementation("junit:junit:4.13.2")
|
||||
androidTestImplementation("androidx.test.ext:junit:1.1.5")
|
||||
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
|
||||
|
||||
// Retrofit and Moshi for API requests.
|
||||
implementation("com.squareup.retrofit2:retrofit:2.9.0")
|
||||
implementation("com.squareup.retrofit2:converter-moshi:2.9.0")
|
||||
implementation("com.squareup.moshi:moshi-kotlin:1.13.0")
|
||||
}
|
|
@ -1,18 +1,20 @@
|
|||
package com.example.palto
|
||||
|
||||
import android.nfc.NfcAdapter
|
||||
import android.nfc.Tag
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.activity.viewModels
|
||||
import com.example.palto.ui.NfcViewModel
|
||||
import com.example.palto.ui.UserViewModel
|
||||
|
||||
|
||||
class PaltoActivity : AppCompatActivity() {
|
||||
|
||||
private var nfcAdapter: NfcAdapter? = null
|
||||
|
||||
private val paltoViewModel: PaltoViewModel by viewModels()
|
||||
private val nfcViewModel: NfcViewModel by viewModels()
|
||||
private val userViewModel: UserViewModel by viewModels()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
@ -32,11 +34,6 @@ class PaltoActivity : AppCompatActivity() {
|
|||
}
|
||||
|
||||
setContentView(R.layout.activity_palto)
|
||||
/*
|
||||
val url = URL("https://www.faraphel.fr/palto/api/auth/token/")
|
||||
val connection = url.openConnection()
|
||||
val auth_data = Json.decodeFromString(connection.content)
|
||||
*/
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
|
@ -44,7 +41,7 @@ class PaltoActivity : AppCompatActivity() {
|
|||
|
||||
nfcAdapter?.enableReaderMode(
|
||||
this,
|
||||
paltoViewModel.tagLiveData::postValue,
|
||||
nfcViewModel.tag::postValue,
|
||||
NfcAdapter.FLAG_READER_NFC_A or NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK,
|
||||
null
|
||||
)
|
||||
|
@ -57,8 +54,10 @@ class PaltoActivity : AppCompatActivity() {
|
|||
nfcAdapter?.disableReaderMode(this)
|
||||
}
|
||||
|
||||
/*
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
fun processTag(tag: Tag) {
|
||||
Log.d("NFC", "Tag ID : " + tag.id.toHexString())
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
package com.example.palto.data.repository
|
||||
|
||||
import com.example.palto.data.network.ServerDataSource
|
||||
import com.example.palto.data.network.PaltoApiService
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class AttendanceRepository(val dataSource: ServerDataSource) {
|
||||
class AttendanceRepository() {
|
||||
// private val cards
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
package com.example.palto.data.repository
|
||||
|
||||
import com.example.palto.data.network.ServerDataSource
|
||||
import com.example.palto.data.network.PaltoApiService
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class SessionRepository(val dataSource: ServerDataSource) {
|
||||
class SessionRepository(val dataSource: PaltoApiService) {
|
||||
// private val cards
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package com.example.palto.model
|
||||
package com.example.palto.domain
|
||||
import java.io.Serializable
|
||||
|
||||
/**
|
|
@ -1,5 +1,4 @@
|
|||
package com.example.palto.model
|
||||
import java.io.Serializable
|
||||
package com.example.palto.domain
|
||||
|
||||
data class Card(
|
||||
val id: String,
|
|
@ -1,4 +1,4 @@
|
|||
package com.example.palto.model
|
||||
package com.example.palto.domain
|
||||
import java.io.Serializable
|
||||
|
||||
/**
|
||||
|
@ -6,4 +6,4 @@ import java.io.Serializable
|
|||
*/
|
||||
data class Session(
|
||||
val id: String
|
||||
) : Serializable
|
||||
)
|
14
app/src/main/java/com/example/palto/ui/NfcViewModel.kt
Normal file
14
app/src/main/java/com/example/palto/ui/NfcViewModel.kt
Normal file
|
@ -0,0 +1,14 @@
|
|||
package com.example.palto.ui
|
||||
|
||||
import android.nfc.Tag
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.example.palto.domain.User
|
||||
|
||||
class NfcViewModel: ViewModel() {
|
||||
val tag = MutableLiveData<Tag>()
|
||||
|
||||
private var _user : MutableLiveData<User> = MutableLiveData<User>()
|
||||
val user : LiveData<User> = _user
|
||||
}
|
|
@ -1,69 +0,0 @@
|
|||
package com.example.palto.ui.attendanceList
|
||||
|
||||
import android.nfc.NfcAdapter
|
||||
import android.nfc.Tag
|
||||
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 androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.navigation.navGraphViewModels
|
||||
import com.example.palto.PaltoViewModel
|
||||
import com.example.palto.R
|
||||
import com.example.palto.databinding.FragmentAttendanceListBinding
|
||||
|
||||
/**
|
||||
* A fragment representing a list of attendances.
|
||||
*/
|
||||
class AttendanceListFragment : Fragment() {
|
||||
|
||||
private val attendanceListViewModel: AttendanceListViewModel by
|
||||
navGraphViewModels(R.id.nav_graph) { AttendanceListViewModel.Factory }
|
||||
|
||||
private val paltoViewModel: PaltoViewModel by
|
||||
activityViewModels()
|
||||
|
||||
private var _binding: FragmentAttendanceListBinding? = null
|
||||
// This property is only valid between onCreateView and onDestroyView
|
||||
private val binding get() = _binding!!
|
||||
|
||||
/**
|
||||
* Only inflate the view.
|
||||
*/
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
|
||||
_binding = FragmentAttendanceListBinding.inflate(inflater, container, false)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
/**
|
||||
* Logic on the returned view of onCreateView.
|
||||
*/
|
||||
override fun onViewCreated(
|
||||
view: View,
|
||||
savedInstanceState: Bundle?
|
||||
) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
// Set the adapter of the view for managing automatically the list of items on the screen.
|
||||
val adapter = AttendanceListAdapter()
|
||||
binding.list.adapter = adapter
|
||||
attendanceListViewModel.cardsLiveData.observe(viewLifecycleOwner) {
|
||||
Log.d("NFC", "A card has been had to the list")
|
||||
adapter.submitList(it)
|
||||
}
|
||||
|
||||
// Set the listener for a new NFC tag.
|
||||
paltoViewModel.tagLiveData.observe(viewLifecycleOwner) {
|
||||
Log.d("NFC", "tag observer has been notified")
|
||||
attendanceListViewModel.insertCard(it)
|
||||
}
|
||||
}
|
||||
}
|
69
app/src/main/java/com/example/palto/ui/menu/MenuAdapter.kt
Normal file
69
app/src/main/java/com/example/palto/ui/menu/MenuAdapter.kt
Normal file
|
@ -0,0 +1,69 @@
|
|||
package com.example.palto.ui.menu
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import android.widget.TextView
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import androidx.recyclerview.widget.ListAdapter
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.example.palto.databinding.FragmentMenuItemBinding
|
||||
import com.example.palto.domain.Session
|
||||
|
||||
/**
|
||||
* A [ListAdapter] that can display [Session] items.
|
||||
*/
|
||||
class MenuAdapter :
|
||||
ListAdapter<Session, MenuAdapter.ViewHolder>(SessionDiffCallback) {
|
||||
|
||||
/*
|
||||
class ViewHolder(binding: FragmentSessionItemBinding) :
|
||||
RecyclerView.ViewHolder(binding.root) {
|
||||
|
||||
val idView: TextView = binding.itemNumber
|
||||
val contentView: TextView = binding.content
|
||||
|
||||
override fun toString(): String {
|
||||
return super.toString() + " '" + contentView.text + "'"
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||
return ViewHolder(
|
||||
FragmentMenuItemBinding.inflate(
|
||||
LayoutInflater.from(parent.context),
|
||||
parent,
|
||||
false
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||
val item = getItem(position)
|
||||
holder.idView.text = position.toString()
|
||||
holder.contentView.text = item.id
|
||||
}
|
||||
|
||||
//override fun getItemCount(): Int = values.size
|
||||
|
||||
inner class ViewHolder(
|
||||
binding: FragmentMenuItemBinding
|
||||
) : RecyclerView.ViewHolder(binding.root) {
|
||||
|
||||
val idView: TextView = binding.itemNumber
|
||||
val contentView: TextView = binding.content
|
||||
override fun toString(): String {
|
||||
return super.toString() + " '" + idView.text + contentView.text + "'"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
object SessionDiffCallback : DiffUtil.ItemCallback<Session>() {
|
||||
override fun areItemsTheSame(oldItem: Session, newItem: Session): Boolean {
|
||||
return oldItem == newItem
|
||||
}
|
||||
|
||||
override fun areContentsTheSame(oldItem: Session, newItem: Session): Boolean {
|
||||
return oldItem.id == newItem.id
|
||||
}
|
||||
}
|
45
app/src/main/java/com/example/palto/ui/menu/MenuFragment.kt
Normal file
45
app/src/main/java/com/example/palto/ui/menu/MenuFragment.kt
Normal file
|
@ -0,0 +1,45 @@
|
|||
package com.example.palto.ui.menu
|
||||
|
||||
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 androidx.fragment.app.viewModels
|
||||
import com.example.palto.databinding.FragmentMenuListBinding
|
||||
import com.example.palto.databinding.FragmentSessionListBinding
|
||||
|
||||
/**
|
||||
* A fragment representing a list of Sessions.
|
||||
*/
|
||||
class MenuFragment : Fragment() {
|
||||
|
||||
private val menuViewModel: MenuViewModel by viewModels()
|
||||
|
||||
private var _binding: FragmentMenuListBinding? = 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 = FragmentMenuListBinding.inflate(inflater, container, false)
|
||||
|
||||
val adapter = MenuAdapter()
|
||||
binding.menuList.adapter = MenuAdapter()
|
||||
menuViewModel.sessions.observe(viewLifecycleOwner) {
|
||||
Log.d("PALTO", "A session has been created")
|
||||
adapter.submitList(it)
|
||||
}
|
||||
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
menuViewModel.createSession()
|
||||
}
|
||||
}
|
21
app/src/main/java/com/example/palto/ui/menu/MenuViewModel.kt
Normal file
21
app/src/main/java/com/example/palto/ui/menu/MenuViewModel.kt
Normal file
|
@ -0,0 +1,21 @@
|
|||
package com.example.palto.ui.menu
|
||||
|
||||
import android.util.Log
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.example.palto.data.repository.LoginRepository
|
||||
import com.example.palto.domain.Session
|
||||
|
||||
class MenuViewModel() : ViewModel() {
|
||||
|
||||
private var _sessions = MutableLiveData<List<Session>>(emptyList())
|
||||
val sessions: LiveData<List<Session>> = _sessions
|
||||
|
||||
fun createSession() {
|
||||
val session = Session(
|
||||
id = "aahh"
|
||||
)
|
||||
_sessions.value = (_sessions.value ?: emptyList()) + session
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package com.example.palto.ui.attendanceList
|
||||
package com.example.palto.ui.session
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
|
@ -6,22 +6,18 @@ import android.widget.TextView
|
|||
import androidx.recyclerview.widget.DiffUtil
|
||||
import androidx.recyclerview.widget.ListAdapter
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.example.palto.databinding.FragmentAttendanceItemBinding
|
||||
import com.example.palto.model.Card
|
||||
import com.example.palto.databinding.FragmentSessionItemBinding
|
||||
import com.example.palto.domain.Card
|
||||
|
||||
/**
|
||||
*
|
||||
* A [ListAdapter] that can display [Card] items.
|
||||
*/
|
||||
class AttendanceListAdapter :
|
||||
ListAdapter<Card, AttendanceListAdapter.ViewHolder>(CardDiffCallback) {
|
||||
|
||||
override fun onCreateViewHolder(
|
||||
parent: ViewGroup,
|
||||
viewType: Int
|
||||
): ViewHolder {
|
||||
class SessionAdapter :
|
||||
ListAdapter<Card, SessionAdapter.ViewHolder>(CardDiffCallback) {
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||
return ViewHolder(
|
||||
FragmentAttendanceItemBinding.inflate(
|
||||
FragmentSessionItemBinding.inflate(
|
||||
LayoutInflater.from(parent.context),
|
||||
parent,
|
||||
false
|
||||
|
@ -37,7 +33,7 @@ class AttendanceListAdapter :
|
|||
}
|
||||
|
||||
inner class ViewHolder(
|
||||
binding: FragmentAttendanceItemBinding
|
||||
binding: FragmentSessionItemBinding
|
||||
) : RecyclerView.ViewHolder(binding.root) {
|
||||
|
||||
val cardId: TextView = binding.cardId
|
|
@ -0,0 +1,56 @@
|
|||
package com.example.palto.ui.session
|
||||
|
||||
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 androidx.fragment.app.activityViewModels
|
||||
import androidx.navigation.navGraphViewModels
|
||||
import com.example.palto.ui.NfcViewModel
|
||||
import com.example.palto.R
|
||||
import com.example.palto.databinding.FragmentSessionListBinding
|
||||
|
||||
/**
|
||||
* A fragment representing a list of attendances.
|
||||
*/
|
||||
class SessionFragment : Fragment() {
|
||||
|
||||
private val sessionViewModel: SessionViewModel by
|
||||
navGraphViewModels(R.id.nav_graph) { SessionViewModel.Factory }
|
||||
|
||||
private val nfcViewModel: NfcViewModel by
|
||||
activityViewModels()
|
||||
|
||||
private var _binding: FragmentSessionListBinding? = null
|
||||
// This property is only valid between onCreateView and onDestroyView
|
||||
private val binding get() = _binding!!
|
||||
|
||||
/**
|
||||
* Have the fragment instantiate the user interface.
|
||||
*/
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
_binding = FragmentSessionListBinding.inflate(inflater, container, false)
|
||||
|
||||
// Set the adapter of the view for managing automatically the list of items on the screen.
|
||||
val adapter = SessionAdapter()
|
||||
binding.sessionList.adapter = adapter
|
||||
sessionViewModel.cards.observe(viewLifecycleOwner) {
|
||||
Log.d("NFC", "A card has been had to the list")
|
||||
adapter.submitList(it)
|
||||
}
|
||||
|
||||
// Set the listener for a new NFC tag.
|
||||
nfcViewModel.tag.observe(viewLifecycleOwner) {
|
||||
Log.d("NFC", "tag observer has been notified")
|
||||
sessionViewModel.insertCard(it)
|
||||
}
|
||||
|
||||
return binding.root
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package com.example.palto.ui.attendanceList
|
||||
package com.example.palto.ui.session
|
||||
|
||||
import android.nfc.Tag
|
||||
import android.util.Log
|
||||
|
@ -6,18 +6,18 @@ import androidx.lifecycle.LiveData
|
|||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.example.palto.data.network.ServerDataSource
|
||||
import com.example.palto.data.repository.AttendanceRepository
|
||||
import com.example.palto.model.Card
|
||||
import com.example.palto.domain.Card
|
||||
|
||||
/**
|
||||
* ViewModel of a session which has a list of attendances.
|
||||
*/
|
||||
class AttendanceListViewModel(
|
||||
class SessionViewModel(
|
||||
private val attendanceRepository: AttendanceRepository
|
||||
) : ViewModel() {
|
||||
|
||||
val cardsLiveData: MutableLiveData<List<Card>> = MutableLiveData(emptyList())
|
||||
private val _cards: MutableLiveData<List<Card>> = MutableLiveData(emptyList())
|
||||
val cards = _cards as LiveData<List<Card>>
|
||||
|
||||
fun insertCard(tag: Tag) {
|
||||
val card = Card(
|
||||
|
@ -26,12 +26,12 @@ class AttendanceListViewModel(
|
|||
"tmp",
|
||||
"tmp"
|
||||
)
|
||||
cardsLiveData.value = (cardsLiveData.value ?: emptyList()) + card
|
||||
_cards.value = (_cards.value ?: emptyList()) + card
|
||||
Log.d("NFC", "view model: A card has been had to the list")
|
||||
}
|
||||
|
||||
/**
|
||||
* ViewModel Factory.
|
||||
* ViewModel Factory.
|
||||
*/
|
||||
companion object {
|
||||
|
||||
|
@ -40,8 +40,8 @@ class AttendanceListViewModel(
|
|||
override fun <T : ViewModel> create(
|
||||
modelClass: Class<T>
|
||||
): T {
|
||||
return AttendanceListViewModel(
|
||||
AttendanceRepository(ServerDataSource())
|
||||
return SessionViewModel(
|
||||
AttendanceRepository()
|
||||
) as T
|
||||
}
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
package com.example.palto.ui.sessionList
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import android.widget.TextView
|
||||
|
||||
import com.example.palto.ui.sessionList.placeholder.PlaceholderContent.PlaceholderItem
|
||||
import com.example.palto.databinding.FragmentSessionItemBinding
|
||||
|
||||
/**
|
||||
* [RecyclerView.Adapter] that can display a [PlaceholderItem].
|
||||
*/
|
||||
class SessionListAdapter(private val values: List<PlaceholderItem>) :
|
||||
RecyclerView.Adapter<SessionListAdapter.ViewHolder>() {
|
||||
|
||||
class ViewHolder(binding: FragmentSessionItemBinding) :
|
||||
RecyclerView.ViewHolder(binding.root) {
|
||||
|
||||
val idView: TextView = binding.itemNumber
|
||||
val contentView: TextView = binding.content
|
||||
|
||||
override fun toString(): String {
|
||||
return super.toString() + " '" + contentView.text + "'"
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||
val view = FragmentSessionItemBinding.inflate(
|
||||
LayoutInflater.from(parent.context),
|
||||
parent,
|
||||
false
|
||||
)
|
||||
return ViewHolder(view)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||
val item = values[position]
|
||||
holder.idView.text = item.id
|
||||
holder.contentView.text = item.content
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int = values.size
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
package com.example.palto.ui.sessionList
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import com.example.palto.R
|
||||
import com.example.palto.ui.sessionList.placeholder.PlaceholderContent
|
||||
|
||||
/**
|
||||
* A fragment representing a list of Sessions.
|
||||
*/
|
||||
class SessionListFragment : Fragment() {
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
val view = inflater.inflate(R.layout.fragment_session_list, container, false)
|
||||
|
||||
if (view is RecyclerView) {
|
||||
view.layoutManager = LinearLayoutManager(context)
|
||||
view.adapter = SessionListAdapter(PlaceholderContent.ITEMS)
|
||||
}
|
||||
return view
|
||||
}
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
package com.example.palto.ui.sessionList
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.example.palto.data.repository.LoginRepository
|
||||
|
||||
class SessionListViewModel(private val loginRepository: LoginRepository) : ViewModel() {
|
||||
/*
|
||||
private val _loginForm = MutableLiveData<LoginFormState>()
|
||||
val loginFormState: LiveData<LoginFormState> = _loginForm
|
||||
|
||||
private val _loginResult = MutableLiveData<LoginResult>()
|
||||
val loginResult: LiveData<LoginResult> = _loginResult
|
||||
*/
|
||||
}
|
|
@ -5,7 +5,14 @@
|
|||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/card_̤id"
|
||||
android:id="@+id/item_number"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/text_margin"
|
||||
android:textAppearance="?attr/textAppearanceListItem" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/content"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/text_margin"
|
|
@ -2,12 +2,12 @@
|
|||
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/list"
|
||||
android:name="com.example.palto.ui.attendanceList.AttendanceFragment"
|
||||
android:id="@+id/menu_list"
|
||||
android:name="com.example.palto.ui.menu.menuFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
app:layoutManager="LinearLayoutManager"
|
||||
tools:context=".ui.attendanceList.AttendanceListFragment"
|
||||
tools:listitem="@layout/fragment_attendance_item" />
|
||||
tools:context=".ui.menu.MenuFragment"
|
||||
tools:listitem="@layout/fragment_menu_item" />
|
|
@ -5,14 +5,7 @@
|
|||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/item_number"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/text_margin"
|
||||
android:textAppearance="?attr/textAppearanceListItem" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/content"
|
||||
android:id="@+id/card_̤id"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/text_margin"
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/list"
|
||||
android:name="com.example.palto.ui.session.SessionListFragment"
|
||||
android:id="@+id/session_list"
|
||||
android:name="com.example.palto.ui.session.sessionFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
app:layoutManager="LinearLayoutManager"
|
||||
tools:context=".ui.sessionList.SessionListFragment"
|
||||
tools:context=".ui.session.SessionFragment"
|
||||
tools:listitem="@layout/fragment_session_item" />
|
|
@ -3,20 +3,28 @@
|
|||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/nav_graph"
|
||||
app:startDestination="@id/attendanceListFragment">
|
||||
app:startDestination="@id/menuFragment">
|
||||
<fragment
|
||||
android:id="@+id/loginFragment"
|
||||
android:name="com.example.palto.ui.login.LoginFragment"
|
||||
android:label="fragment._login"
|
||||
tools:layout="@layout/fragment_login" />
|
||||
<fragment
|
||||
android:id="@+id/sessionListFragment"
|
||||
android:name="com.example.palto.ui.sessionList.SessionListFragment"
|
||||
android:id="@+id/sessionFragment"
|
||||
android:name="com.example.palto.ui.session.SessionFragment"
|
||||
android:label="fragment_session_list"
|
||||
tools:layout="@layout/fragment_session_list" />
|
||||
<fragment
|
||||
android:id="@+id/attendanceListFragment"
|
||||
android:name="com.example.palto.ui.attendanceList.AttendanceListFragment"
|
||||
android:label="fragment_attendance_list"
|
||||
tools:layout="@layout/fragment_attendance_list" />
|
||||
android:id="@+id/menuFragment"
|
||||
android:name="com.example.palto.ui.menu.MenuFragment"
|
||||
android:label="fragment_menu_list"
|
||||
tools:layout="@layout/fragment_menu_list" >
|
||||
<action
|
||||
android:id="@+id/action_menuFragment_to_loginFragment"
|
||||
app:destination="@id/loginFragment" />
|
||||
<action
|
||||
android:id="@+id/action_menuFragment_to_sessionFragment"
|
||||
app:destination="@id/sessionFragment" />
|
||||
</fragment>
|
||||
|
||||
</navigation>
|
Loading…
Reference in a new issue