Skip to content

Commit ba14b94

Browse files
committed
36 - Migrate MainActivity to ViewBinding
1 parent c20f923 commit ba14b94

File tree

3 files changed

+124
-120
lines changed

3 files changed

+124
-120
lines changed

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/record/MainActivity.kt

Lines changed: 38 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package com.blogspot.e_kanivets.moneytracker.activity.record
22

33
import android.content.Intent
4+
import android.os.Bundle
5+
import android.widget.TextView
46
import androidx.appcompat.app.AppCompatActivity
57
import androidx.recyclerview.widget.RecyclerView
6-
import android.widget.TextView
78
import com.blogspot.e_kanivets.moneytracker.R
89
import com.blogspot.e_kanivets.moneytracker.activity.ReportActivity
910
import com.blogspot.e_kanivets.moneytracker.activity.base.BaseDrawerActivity
@@ -15,6 +16,7 @@ import com.blogspot.e_kanivets.moneytracker.controller.PreferenceController
1516
import com.blogspot.e_kanivets.moneytracker.controller.data.AccountController
1617
import com.blogspot.e_kanivets.moneytracker.controller.data.ExchangeRateController
1718
import com.blogspot.e_kanivets.moneytracker.controller.data.RecordController
19+
import com.blogspot.e_kanivets.moneytracker.databinding.ActivityMainBinding
1820
import com.blogspot.e_kanivets.moneytracker.entity.Period
1921
import com.blogspot.e_kanivets.moneytracker.entity.RecordItem
2022
import com.blogspot.e_kanivets.moneytracker.entity.data.Record
@@ -23,8 +25,6 @@ import com.blogspot.e_kanivets.moneytracker.ui.AppRateDialog
2325
import com.blogspot.e_kanivets.moneytracker.ui.presenter.ShortSummaryPresenter
2426
import com.blogspot.e_kanivets.moneytracker.util.CrashlyticsProxy
2527
import com.blogspot.e_kanivets.moneytracker.util.RecordItemsBuilder
26-
import kotlinx.android.synthetic.main.activity_main.*
27-
import kotlinx.android.synthetic.main.content_main.*
2828
import javax.inject.Inject
2929

3030
class MainActivity : BaseDrawerActivity() {
@@ -36,42 +36,59 @@ class MainActivity : BaseDrawerActivity() {
3636

3737
@Inject
3838
lateinit var recordController: RecordController
39+
3940
@Inject
4041
lateinit var rateController: ExchangeRateController
42+
4143
@Inject
4244
lateinit var accountController: AccountController
45+
4346
@Inject
4447
lateinit var currencyController: CurrencyController
48+
4549
@Inject
4650
lateinit var preferenceController: PreferenceController
51+
4752
@Inject
4853
lateinit var periodController: PeriodController
54+
4955
@Inject
5056
lateinit var formatController: FormatController
5157

58+
private lateinit var summaryPresenter: ShortSummaryPresenter
59+
60+
private lateinit var binding: ActivityMainBinding
5261
private lateinit var tvDefaultAccountTitle: TextView
5362
private lateinit var tvDefaultAccountSum: TextView
5463
private lateinit var tvCurrency: TextView
55-
private lateinit var summaryPresenter: ShortSummaryPresenter
5664

57-
override fun getContentViewId(): Int = R.layout.activity_main
65+
override fun onCreate(savedInstanceState: Bundle?) {
66+
super.onCreate(savedInstanceState)
5867

59-
override fun initData(): Boolean {
60-
super.initData()
61-
appComponent.inject(this)
62-
63-
preferenceController.addLaunchCount()
68+
binding = ActivityMainBinding.inflate(layoutInflater)
69+
setContentView(binding.root)
6470

65-
return super.initData()
71+
initData()
72+
initToolbar()
73+
initViews()
6674
}
6775

68-
override fun initViews() {
69-
super.initViews()
76+
private fun initData(): Boolean {
77+
appComponent.inject(this)
78+
preferenceController.addLaunchCount()
79+
return true
80+
}
7081

82+
private fun initViews() {
7183
setTitle(R.string.title_records)
7284

7385
if (preferenceController.checkRateDialog()) showAppRateDialog()
7486

87+
drawer = binding.drawerLayout
88+
navigationView = binding.navView
89+
90+
navigationView.setNavigationItemSelectedListener(this)
91+
7592
tvDefaultAccountTitle = navigationView.getHeaderView(0).findViewById(R.id.tvDefaultAccountTitle)
7693
tvDefaultAccountSum = navigationView.getHeaderView(0).findViewById(R.id.tvDefaultAccountSum)
7794
tvCurrency = navigationView.getHeaderView(0).findViewById(R.id.tvCurrency)
@@ -83,27 +100,25 @@ class MainActivity : BaseDrawerActivity() {
83100
val summaryViewHolder = summaryPresenter.create(true) { showReport() }.tag as RecyclerView.ViewHolder
84101
recordAdapter.summaryViewHolder = summaryViewHolder
85102

86-
recyclerView.adapter = recordAdapter
103+
binding.recyclerView.adapter = recordAdapter
87104

88-
spinner.setPeriodSelectedListener { period ->
105+
binding.spinner.setPeriodSelectedListener { period ->
89106
this.period = period
90107
periodController.writeLastUsedPeriod(period)
91108
update()
92109
}
93110

94-
spinner.setPeriod(periodController.readLastUsedPeriod())
111+
binding.spinner.setPeriod(periodController.readLastUsedPeriod())
95112

96-
btnAddExpense.setOnClickListener { addExpense() }
97-
btnAddIncome.setOnClickListener { addIncome() }
113+
binding.btnAddExpense.setOnClickListener { addExpense() }
114+
binding.btnAddIncome.setOnClickListener { addIncome() }
98115
}
99116

100117
private fun getPositionWithoutSummary(position: Int) = position - 1
101118

102119
private fun editRecord(position: Int) {
103-
104120
CrashlyticsProxy.get().logButton("Edit Record")
105121
val record = recordList[getRecordPosition(position)]
106-
107122
startAddRecordActivity(record, AddRecordActivity.Mode.MODE_EDIT, record.type)
108123
}
109124

@@ -124,27 +139,22 @@ class MainActivity : BaseDrawerActivity() {
124139
startActivity(intent)
125140
}
126141

127-
public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
142+
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
128143
super.onActivityResult(requestCode, resultCode, data)
129144

130145
if (resultCode == AppCompatActivity.RESULT_OK) {
131146
when (requestCode) {
132147
REQUEST_ACTION_RECORD -> update()
133-
134148
REQUEST_BACKUP -> {
135149
appComponent.inject(this)
136150
update()
137151
}
138-
139-
else -> {
140-
}
141152
}
142153
}
143154
}
144155

145156
override fun update() {
146-
recordList = recordController.getRecordsForPeriod(period)
147-
recordList = recordList.reversed()
157+
recordList = recordController.getRecordsForPeriod(period).reversed()
148158
recordItems = RecordItemsBuilder().getRecordItems(recordList)
149159

150160
val currency = currencyController.readDefaultCurrency()
@@ -160,7 +170,6 @@ class MainActivity : BaseDrawerActivity() {
160170

161171
private fun getRecordPosition(position: Int): Int {
162172
var recordPosition = 0
163-
164173
for (indexOfItem in 0 until position) {
165174
if (recordItems[indexOfItem] is RecordItem.Record) {
166175
recordPosition++
@@ -186,14 +195,12 @@ class MainActivity : BaseDrawerActivity() {
186195

187196
private fun fillDefaultAccount() {
188197
val defaultAccount = accountController.readDefaultAccount() ?: return
189-
190-
tvDefaultAccountSum.text = defaultAccount.title
198+
tvDefaultAccountTitle.text = defaultAccount.title
191199
tvDefaultAccountSum.text = formatController.formatAmount(defaultAccount.fullSum)
192200
tvCurrency.text = defaultAccount.currency
193201
}
194202

195203
companion object {
196204
private const val REQUEST_ACTION_RECORD = 6
197205
}
198-
199206
}
Lines changed: 86 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,93 @@
11
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
2-
xmlns:app="http://schemas.android.com/apk/res-auto"
3-
xmlns:tools="http://schemas.android.com/tools"
4-
android:id="@+id/drawer_layout"
2+
xmlns:app="http://schemas.android.com/apk/res-auto"
3+
xmlns:tools="http://schemas.android.com/tools"
4+
android:id="@+id/drawer_layout"
5+
android:layout_width="match_parent"
6+
android:layout_height="match_parent"
7+
tools:openDrawer="close">
8+
9+
<androidx.coordinatorlayout.widget.CoordinatorLayout
510
android:layout_width="match_parent"
611
android:layout_height="match_parent"
7-
tools:openDrawer="close">
12+
android:fitsSystemWindows="true"
13+
tools:context=".activity.create_order.CategoryActivity">
14+
15+
<com.google.android.material.appbar.AppBarLayout
16+
android:layout_width="match_parent"
17+
android:layout_height="wrap_content"
18+
android:theme="@style/AppTheme.AppBarOverlay">
19+
20+
<androidx.appcompat.widget.Toolbar
21+
android:id="@+id/toolbar"
22+
android:layout_width="match_parent"
23+
android:layout_height="?attr/actionBarSize"
24+
android:background="?attr/colorPrimary"
25+
app:popupTheme="@style/AppTheme.PopupOverlay">
826

9-
<androidx.coordinatorlayout.widget.CoordinatorLayout
27+
<com.blogspot.e_kanivets.moneytracker.ui.PeriodSpinner
28+
android:id="@+id/spinner"
29+
android:layout_width="wrap_content"
30+
android:layout_height="wrap_content"
31+
android:layout_gravity="end"
32+
android:theme="@style/Theme.AppCompat.Light"
33+
tools:listitem="@android:layout/simple_expandable_list_item_1" />
34+
</androidx.appcompat.widget.Toolbar>
35+
36+
</com.google.android.material.appbar.AppBarLayout>
37+
38+
<LinearLayout
39+
android:layout_width="fill_parent"
40+
android:layout_height="fill_parent"
41+
android:orientation="vertical"
42+
app:layout_behavior="@string/appbar_scrolling_view_behavior"
43+
tools:showIn="@layout/activity_main">
44+
45+
<androidx.recyclerview.widget.RecyclerView
46+
android:id="@+id/recyclerView"
1047
android:layout_width="match_parent"
11-
android:layout_height="match_parent"
12-
android:fitsSystemWindows="true"
13-
tools:context=".activity.create_order.CategoryActivity">
14-
15-
<com.google.android.material.appbar.AppBarLayout
16-
android:layout_width="match_parent"
17-
android:layout_height="wrap_content"
18-
android:theme="@style/AppTheme.AppBarOverlay">
19-
20-
<androidx.appcompat.widget.Toolbar
21-
android:id="@+id/toolbar"
22-
android:layout_width="match_parent"
23-
android:layout_height="?attr/actionBarSize"
24-
android:background="?attr/colorPrimary"
25-
app:popupTheme="@style/AppTheme.PopupOverlay">
26-
27-
<com.blogspot.e_kanivets.moneytracker.ui.PeriodSpinner
28-
android:id="@+id/spinner"
29-
android:layout_width="wrap_content"
30-
android:layout_height="wrap_content"
31-
android:layout_gravity="end"
32-
android:theme="@style/Theme.AppCompat.Light"
33-
tools:listitem="@android:layout/simple_expandable_list_item_1" />
34-
</androidx.appcompat.widget.Toolbar>
35-
36-
</com.google.android.material.appbar.AppBarLayout>
37-
38-
<include layout="@layout/content_main" />
39-
40-
</androidx.coordinatorlayout.widget.CoordinatorLayout>
41-
42-
<com.google.android.material.navigation.NavigationView
43-
android:id="@+id/nav_view"
44-
android:layout_width="wrap_content"
45-
android:layout_height="match_parent"
46-
android:layout_gravity="start"
47-
android:background="@color/white"
48-
app:headerLayout="@layout/view_nav_drawer_header"
49-
app:menu="@menu/menu_nav_drawer" />
48+
android:layout_height="0dp"
49+
android:layout_gravity="center_horizontal"
50+
android:layout_weight="1"
51+
android:background="@android:color/transparent"
52+
android:drawSelectorOnTop="true"
53+
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
54+
55+
<LinearLayout
56+
android:layout_width="match_parent"
57+
android:layout_height="wrap_content"
58+
android:layout_gravity="center_horizontal"
59+
android:orientation="horizontal">
60+
61+
<Button
62+
android:id="@+id/btnAddIncome"
63+
android:layout_width="0dp"
64+
android:layout_height="wrap_content"
65+
android:layout_weight="1"
66+
android:background="@drawable/selector_add_income"
67+
android:padding="@dimen/normal_margin"
68+
android:text="@string/add_income" />
69+
70+
<Button
71+
android:id="@+id/btnAddExpense"
72+
android:layout_width="0dp"
73+
android:layout_height="wrap_content"
74+
android:layout_weight="1"
75+
android:background="@drawable/selector_add_expense"
76+
android:padding="@dimen/normal_margin"
77+
android:text="@string/add_expense" />
78+
</LinearLayout>
79+
80+
</LinearLayout>
81+
82+
</androidx.coordinatorlayout.widget.CoordinatorLayout>
83+
84+
<com.google.android.material.navigation.NavigationView
85+
android:id="@+id/nav_view"
86+
android:layout_width="wrap_content"
87+
android:layout_height="match_parent"
88+
android:layout_gravity="start"
89+
android:background="@color/white"
90+
app:headerLayout="@layout/view_nav_drawer_header"
91+
app:menu="@menu/menu_nav_drawer" />
5092

5193
</androidx.drawerlayout.widget.DrawerLayout>

app/src/main/res/layout/content_main.xml

Lines changed: 0 additions & 45 deletions
This file was deleted.

0 commit comments

Comments
 (0)