Skip to content

Commit

Permalink
Added Navigation.
Browse files Browse the repository at this point in the history
  • Loading branch information
furkanaskin committed Jul 10, 2019
1 parent 4b7610f commit 98fb80a
Show file tree
Hide file tree
Showing 17 changed files with 212 additions and 54 deletions.
10 changes: 8 additions & 2 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ plugins {
id(Plugins.androidApplication)
id(Plugins.kotlinAndroid)
id(Plugins.kotlinAndroidExtensions)
id(Plugins.navigationSafeArgs)
}

android {
compileSdkVersion(Versions.compileSdkVersion)
defaultConfig {
applicationId = Config.applicatiınId
applicationId = Config.applicationId
minSdkVersion(Versions.minSdkVersion)
targetSdkVersion(Versions.targetSdkVersion)
versionCode = Release.versionCode
Expand Down Expand Up @@ -35,10 +36,15 @@ dependencies {
implementation(CoreLibraries.koin)
implementation(CoreLibraries.koinViewModel)

// Navigation
implementation(AndroidxLibraries.navigationUI)
implementation(AndroidxLibraries.navigationFragment)

// Testing
testImplementation(TestLibraries.jUnit)
androidTestImplementation(TestLibraries.runnner)
androidTestImplementation(TestLibraries.espressoCore)
}

//apply(mapOf("plugin" to "com.google.gms.google-services"))
//apply(mapOf("plugin" to "com.google.gms.google-services"))

12 changes: 1 addition & 11 deletions app/src/main/java/com/gdgistanbul/attendence/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,13 @@ package com.gdgistanbul.attendence

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.gdgistanbul.attendence.ui.main.MainFragment
import com.gdgistanbul.viewmodel.MeetupViewModel
import org.koin.android.viewmodel.ext.android.viewModel

class MainActivity : AppCompatActivity() {

private val viewModel: MeetupViewModel by viewModel()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
if (savedInstanceState == null) {
supportFragmentManager.beginTransaction()
.replace(R.id.container, MainFragment.newInstance())
.commitNow()
}
viewModel.refreshEvents()

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.gdgistanbul.attendence.ui.event_list


import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController
import com.gdgistanbul.attendence.R
import kotlinx.android.synthetic.main.fragment_event_list.*

class EventListFragment : Fragment() {

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_event_list, container, false)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

buttonNavigateUserList.setOnClickListener {
// TODO - EventID Will replace with returning eventID from MeetupAPI
val eventID = (0..99999999).random()
val action = EventListFragmentDirections.actionEventListFragmentToUserListFragment(eventID)
findNavController().navigate(action)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,13 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.navigation.fragment.findNavController
import com.gdgistanbul.attendence.R
import com.gdgistanbul.viewmodel.MeetupViewModel
import kotlinx.android.synthetic.main.main_fragment.*
import org.koin.android.viewmodel.ext.android.sharedViewModel

class MainFragment : Fragment() {

companion object {
fun newInstance() = MainFragment()
}

private val viewModel: MeetupViewModel by sharedViewModel()

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
Expand All @@ -29,12 +20,9 @@ class MainFragment : Fragment() {

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel.eventsLiveData.observe(this, Observer {
message.text = "${it.size}"
})
viewModel.toastLiveData.observe(this, Observer {
Toast.makeText(context, it, Toast.LENGTH_LONG).show()
})
}

}
buttonSignInWithMeetup.setOnClickListener {
findNavController().navigate(R.id.action_mainFragment_to_eventListFragment)
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.gdgistanbul.attendence.ui.user_list

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.navigation.fragment.navArgs
import com.gdgistanbul.attendence.MainActivity
import com.gdgistanbul.attendence.R

class UserListFragment : Fragment() {

private val args: UserListFragmentArgs by navArgs()

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_user_list, container, false)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

val eventID = args.eventID
// TODO - Just for testing safeArgs
Toast.makeText((activity as MainActivity), eventID.toString(), Toast.LENGTH_SHORT).show()
}


}
29 changes: 29 additions & 0 deletions app/src/main/res/layout/fragment_event_list.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.event_list.EventListFragment">

<Button
android:id="@+id/buttonNavigateUserList"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Navigate to UserList"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Event List Fragment"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
18 changes: 18 additions & 0 deletions app/src/main/res/layout/fragment_user_list.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.user_list.UserListFragment">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="User List Fragment"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
17 changes: 11 additions & 6 deletions app/src/main/res/layout/main_activity.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" />
<fragment 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/container"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/mobile_navigation"
tools:context=".MainActivity" />

40 changes: 25 additions & 15 deletions app/src/main/res/layout/main_fragment.xml
Original file line number Diff line number Diff line change
@@ -1,20 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.main.MainFragment">
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.main.MainFragment">

<TextView
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="MainFragment"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/buttonSignInWithMeetup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Meetup ile giriş yap"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/message" />

<TextView
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="MainFragment"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
35 changes: 35 additions & 0 deletions app/src/main/res/navigation/mobile_navigation.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<navigation 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/mobile_navigation"
app:startDestination="@id/mainFragment">

<fragment
android:id="@+id/eventListFragment"
android:name="com.gdgistanbul.attendence.ui.event_list.EventListFragment"
android:label="fragment_event_list"
tools:layout="@layout/fragment_event_list">
<action
android:id="@+id/action_eventListFragment_to_userListFragment"
app:destination="@id/userListFragment" />
</fragment>
<fragment
android:id="@+id/userListFragment"
android:name="com.gdgistanbul.attendence.ui.user_list.UserListFragment"
android:label="fragment_user_list"
tools:layout="@layout/fragment_user_list">
<argument
android:name="eventID"
app:argType="integer" />
</fragment>
<fragment
android:id="@+id/mainFragment"
android:name="com.gdgistanbul.attendence.ui.main.MainFragment"
android:label="main_fragment"
tools:layout="@layout/main_fragment">
<action
android:id="@+id/action_mainFragment_to_eventListFragment"
app:destination="@id/eventListFragment" />
</fragment>
</navigation>
5 changes: 4 additions & 1 deletion app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
<resources>
<string name="app_name">Attendence</string>
<string name="app_name">Attendence</string>

<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
</resources>
1 change: 1 addition & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ buildscript {
classpath(ClassPaths.gradleClasspath)
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.41")
classpath("com.google.gms:google-services:4.3.0")
classpath(ClassPaths.navigationSafeArgsClasspath)
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
Expand Down
2 changes: 2 additions & 0 deletions buildSrc/src/main/java/ClassPaths.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,6 @@ object ClassPaths {
"org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlinVersion}"
val kotlinSerializationClasspath =
"org.jetbrains.kotlin:kotlin-serialization:${Versions.kotlinVersion}"
val navigationSafeArgsClasspath =
"androidx.navigation:navigation-safe-args-gradle-plugin:${Versions.navigationVersion}"
}
2 changes: 1 addition & 1 deletion buildSrc/src/main/java/Config.kt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
object Config {
val applicatiınId = "com.gdgistanbul.attendence"
val applicationId = "com.gdgistanbul.attendence"
val testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner"
}
4 changes: 4 additions & 0 deletions buildSrc/src/main/java/Dependencies.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ object AndroidxLibraries {
"androidx.lifecycle:lifecycle-extensions:${Versions.lifecycleVersion}"
const val viewModel =
"androidx.lifecycle:lifecycle-viewmodel-ktx:${Versions.lifecycleVersion}"
const val navigationFragment =
"androidx.navigation:navigation-fragment-ktx:${Versions.navigationVersion}"
const val navigationUI =
"androidx.navigation:navigation-ui-ktx:${Versions.navigationVersion}"
}

object FirebaseLibraries {
Expand Down
1 change: 1 addition & 0 deletions buildSrc/src/main/java/Plugins.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ object Plugins {
val javaLibrary = "java-library"
val kotlin= "kotlin"
val kapt = "kotlin-kapt"
val navigationSafeArgs = "androidx.navigation.safeargs"
}
1 change: 1 addition & 0 deletions buildSrc/src/main/java/Versions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,5 @@ object Versions {
const val espressoCoreVersion = "3.0.2"
const val coinVersion = "2.0.1"
const val moshiVersion = "1.8.0"
const val navigationVersion = "2.0.0"
}

0 comments on commit 98fb80a

Please sign in to comment.