Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("kotlin-kapt")
}

android {
Expand Down Expand Up @@ -35,6 +36,7 @@ android {
}
buildFeatures {
viewBinding = true
dataBinding = true
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package umc.com.mobile.project.data.model.gradInfo

data class ScheduleSpinner(
val name: String,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package umc.com.mobile.project.data.model.login

data class LoginResponse (
val id: String,
val pw: String
)
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
package umc.com.mobile.project.ui.gradInfo

import android.R
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.SpinnerAdapter
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.viewpager2.widget.ViewPager2
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator
import umc.com.mobile.project.databinding.FragmentCareerBinding
import umc.com.mobile.project.databinding.FragmentGradInfoBinding
import umc.com.mobile.project.databinding.FragmentGradeBinding
import umc.com.mobile.project.ui.career.CareerViewModel
import umc.com.mobile.project.ui.gradInfo.adapter.GradInfoVPAdapter

class GradeFragment : Fragment() {
private var _binding: FragmentGradeBinding? = null
Expand All @@ -27,14 +25,37 @@ class GradeFragment : Fragment() {
): View {
_binding = FragmentGradeBinding.inflate(inflater, container, false)

viewModel.text.observe(viewLifecycleOwner) {
// binding.text.text = it
}
initSpinnerSchedule() // spinner 설정

return binding.root
}

override fun onDestroyView() {
super.onDestroyView()
_binding = null
}

private fun initSpinnerSchedule() {
binding.spinnerSchedule.onItemSelectedListener =
object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(
parent: AdapterView<*>?,
view: View?,
position: Int,
id: Long
) {
if (!binding.spinnerSchedule.getItemAtPosition(position).equals("시간표 불러오기")) {
Toast.makeText(
context,
"Selected: ${binding.spinnerSchedule.getItemAtPosition(position)}",
Toast.LENGTH_LONG
)
}
}

override fun onNothingSelected(p0: AdapterView<*>?) {

}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package umc.com.mobile.project.ui.gradInfo.adapter

import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import androidx.annotation.LayoutRes
import androidx.core.content.ContextCompat
import umc.com.mobile.project.R
import umc.com.mobile.project.data.model.gradInfo.ScheduleSpinner
import umc.com.mobile.project.databinding.ItemSpinnerGradInfoScheduleBinding

class SpinnerAdapter(
context: Context,
@LayoutRes private val resId: Int,
private val values: MutableList<ScheduleSpinner>
) : ArrayAdapter<ScheduleSpinner>(context, resId, values) {

override fun getCount() = values.size


override fun getItem(position: Int) = values[position]

@SuppressLint("ViewHolder")
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val binding = ItemSpinnerGradInfoScheduleBinding.inflate(LayoutInflater.from(parent.context), parent, false)
val model = values[position]
try {
binding.tvSchedule.text = model.name
binding.tvSchedule.setTextColor(ContextCompat.getColor(context, R.color.white))
} catch (e: Exception) {
e.printStackTrace()
}
return binding.root
}

override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View {
val binding = ItemSpinnerGradInfoScheduleBinding.inflate(LayoutInflater.from(parent.context), parent, false)
val model = values[position]
try {
binding.tvSchedule.text = model.name

} catch (e: Exception) {
e.printStackTrace()
}
return binding.root
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,25 @@ package umc.com.mobile.project.ui.login

import android.content.Intent
import android.os.Bundle
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import umc.com.mobile.project.MainActivity
import umc.com.mobile.project.databinding.ActivityLoginBinding
import umc.com.mobile.project.ui.login.viewmodel.LoginViewModel

class LoginActivity : AppCompatActivity() {
private lateinit var binding: ActivityLoginBinding
private val viewModel: LoginViewModel by viewModels()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

binding = ActivityLoginBinding.inflate(layoutInflater)
setContentView(binding.root)

binding.vm = viewModel
binding.lifecycleOwner = this

binding.btnLogin.setOnClickListener {
val intent = Intent(this@LoginActivity, MainActivity::class.java)
startActivity(intent)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package umc.com.mobile.project.ui.login.viewmodel

import androidx.lifecycle.LiveData
import androidx.lifecycle.MediatorLiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel

class LoginViewModel: ViewModel() {
/**
* 버튼 활성화 기능
*/
val id: MutableLiveData<String> = MutableLiveData()
val pw: MutableLiveData<String> = MutableLiveData()

val isFilledAllOptions: LiveData<Boolean> = MediatorLiveData<Boolean>().apply {
addSource(id) { value = isBothFieldsFilled() }
addSource(pw) { value = isBothFieldsFilled() }
}

private fun isBothFieldsFilled(): Boolean {
return !id.value.isNullOrEmpty() && !pw.value.isNullOrEmpty()
}

fun init() {
id.postValue("")
pw.postValue("")
}
}
5 changes: 5 additions & 0 deletions app/src/main/res/drawable/bg_solid_blue_radius_25.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/skyBlue"/>
<corners android:radius="25dp"/>
</shape>
19 changes: 19 additions & 0 deletions app/src/main/res/drawable/bg_spinner_solid_blue_radius_16_5.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<layer-list>
<item>
<shape android:shape="rectangle">
<solid android:color="@color/skyBlue" />
<corners android:radius="16.5dp" />
<padding android:right="11dp" />
</shape>
</item>
<item
android:drawable="@drawable/ic_down_14"
android:gravity="center|end"
android:height="10dp"
android:width="14dp"/>
</layer-list>
</item>
</selector>
5 changes: 5 additions & 0 deletions app/src/main/res/drawable/bg_stroke_blue_radius_16_5.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:color="@color/skyBlue" android:width="1dp"/>
<corners android:radius="16.5dp"/>
</shape>
13 changes: 13 additions & 0 deletions app/src/main/res/drawable/bg_stroke_top_gray_1.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/text_gray" />
</shape>
</item>
<item android:left="1dp">
<shape android:shape="rectangle">
<solid android:color="#FFFFFF" />
</shape>
</item>
</layer-list>
4 changes: 4 additions & 0 deletions app/src/main/res/drawable/ic_down_14.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<vector android:height="11.2dp" android:viewportHeight="8"
android:viewportWidth="10" android:width="14dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#ffffff" android:pathData="M5.778,7.038C5.377,7.533 4.623,7.533 4.222,7.038L0.254,2.129C-0.274,1.475 0.191,0.5 1.032,0.5L8.968,0.5C9.809,0.5 10.274,1.475 9.746,2.129L5.778,7.038Z"/>
</vector>
Loading