Skip to content
This repository was archived by the owner on Jun 27, 2020. It is now read-only.

Commit 1572405

Browse files
#168. Migrate ListView to RecyclerView in MainActivity.
1 parent 13ea4fa commit 1572405

27 files changed

+458
-353
lines changed

app/src/main/java/com/blogspot/e_kanivets/moneytracker/MtApp.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import com.blogspot.e_kanivets.moneytracker.di.DaggerAppComponent;
77
import com.blogspot.e_kanivets.moneytracker.di.module.ControllerModule;
88
import com.blogspot.e_kanivets.moneytracker.di.module.repo.CachedRepoModule;
9-
109
import com.blogspot.e_kanivets.moneytracker.util.AnswersProxy;
1110
import com.crashlytics.android.Crashlytics;
1211

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/ReportActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ protected void initViews() {
7474
initSpinnerCurrency();
7575

7676
shortSummaryPresenter = new ShortSummaryPresenter(ReportActivity.this);
77-
expandableListView.addHeaderView(shortSummaryPresenter.create(false));
77+
expandableListView.addHeaderView(shortSummaryPresenter.create(false, null));
7878
}
7979

8080
private void update(String currency) {

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/AccountsActivity.java

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,30 +22,36 @@
2222
import butterknife.OnItemClick;
2323

2424
public class AccountsActivity extends BaseBackActivity {
25-
@SuppressWarnings("unused") private static final String TAG = "AccountsActivity";
25+
@SuppressWarnings("unused")
26+
private static final String TAG = "AccountsActivity";
2627

2728
private static final int REQUEST_ADD_ACCOUNT = 1;
2829
private static final int REQUEST_TRANSFER = 2;
2930
private static final int REQUEST_EDIT_ACCOUNT = 3;
3031

31-
@Inject AccountController accountController;
32+
@Inject
33+
AccountController accountController;
3234

3335
private AccountsSummaryPresenter summaryPresenter;
3436

35-
@BindView(R.id.listView) ListView listView;
37+
@BindView(R.id.listView)
38+
ListView listView;
3639

37-
@Override protected int getContentViewId() {
40+
@Override
41+
protected int getContentViewId() {
3842
return R.layout.activity_accounts;
3943
}
4044

41-
@Override protected boolean initData() {
45+
@Override
46+
protected boolean initData() {
4247
boolean result = super.initData();
4348
getAppComponent().inject(AccountsActivity.this);
4449
summaryPresenter = new AccountsSummaryPresenter(AccountsActivity.this);
4550
return result;
4651
}
4752

48-
@Override protected void initViews() {
53+
@Override
54+
protected void initViews() {
4955
super.initViews();
5056

5157
listView.addHeaderView(summaryPresenter.create());
@@ -54,23 +60,23 @@ public class AccountsActivity extends BaseBackActivity {
5460
update();
5561
}
5662

57-
@Override public boolean onCreateOptionsMenu(Menu menu) {
63+
@Override
64+
public boolean onCreateOptionsMenu(Menu menu) {
5865
getMenuInflater().inflate(R.menu.menu_accounts, menu);
5966
return true;
6067
}
6168

62-
@Override public boolean onOptionsItemSelected(MenuItem item) {
63-
switch (item.getItemId()) {
64-
case R.id.action_transfer:
65-
makeTransfer();
66-
return true;
67-
68-
default:
69-
return super.onOptionsItemSelected(item);
69+
@Override
70+
public boolean onOptionsItemSelected(MenuItem item) {
71+
if (item.getItemId() == R.id.action_transfer) {
72+
makeTransfer();
73+
return true;
7074
}
75+
return super.onOptionsItemSelected(item);
7176
}
7277

73-
@OnItemClick(R.id.listView) public void onAccountClick(int position) {
78+
@OnItemClick(R.id.listView)
79+
public void onAccountClick(int position) {
7480
Account account = accountController.readAll().get(position - 1);
7581
startActivityForResult(EditAccountActivity.Companion.newIntent(this, account), REQUEST_EDIT_ACCOUNT);
7682
}
@@ -80,13 +86,15 @@ public void makeTransfer() {
8086
startActivityForResult(new Intent(AccountsActivity.this, TransferActivity.class), REQUEST_TRANSFER);
8187
}
8288

83-
@OnClick(R.id.btn_add_account) public void addAccount() {
89+
@OnClick(R.id.btn_add_account)
90+
public void addAccount() {
8491
AnswersProxy.get().logButton("Add Account");
8592
Intent intent = new Intent(AccountsActivity.this, AddAccountActivity.class);
8693
startActivityForResult(intent, REQUEST_ADD_ACCOUNT);
8794
}
8895

89-
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) {
96+
@Override
97+
public void onActivityResult(int requestCode, int resultCode, Intent data) {
9098
super.onActivityResult(requestCode, resultCode, data);
9199

92100
if (resultCode == AppCompatActivity.RESULT_OK) {

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/edit/EditAccountActivity.kt

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import android.content.Intent
77
import android.support.v4.view.ViewPager.OnPageChangeListener
88
import android.view.Menu
99
import android.view.MenuItem
10+
import android.view.View
1011
import com.blogspot.e_kanivets.moneytracker.R
1112
import com.blogspot.e_kanivets.moneytracker.activity.account.edit.fragment.AccountOperationsFragment
1213
import com.blogspot.e_kanivets.moneytracker.activity.account.edit.fragment.EditAccountFragment
@@ -18,6 +19,9 @@ import kotlinx.android.synthetic.main.activity_edit_account.fabDone
1819
import kotlinx.android.synthetic.main.activity_edit_account.tabLayout
1920
import kotlinx.android.synthetic.main.activity_edit_account.viewPager
2021
import javax.inject.Inject
22+
import android.view.inputmethod.InputMethodManager
23+
import kotlinx.android.synthetic.main.fragment_edit_account.*
24+
2125

2226
class EditAccountActivity : BaseBackActivity() {
2327

@@ -55,12 +59,29 @@ class EditAccountActivity : BaseBackActivity() {
5559
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}
5660

5761
override fun onPageSelected(position: Int) {
58-
if (position == 0) fabDone.show() else fabDone.hide()
62+
if (position == 0) {
63+
fabDone.show()
64+
showOrHideKeyboard(true)
65+
} else {
66+
fabDone.hide()
67+
showOrHideKeyboard(false)
68+
}
5969
}
60-
6170
})
6271
}
6372

73+
private fun showOrHideKeyboard(showKeyboard: Boolean) {
74+
val view: View? = currentFocus
75+
if (view != null) {
76+
val imm = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
77+
if (showKeyboard)
78+
imm.showSoftInput(etTitle, 0)
79+
else
80+
imm.hideSoftInputFromWindow(view.windowToken, 0)
81+
}
82+
}
83+
84+
6485
override fun onCreateOptionsMenu(menu: Menu): Boolean {
6586
menuInflater.inflate(if (account.isArchived) R.menu.menu_archived_account else R.menu.menu_account, menu)
6687
return true

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/edit/fragment/AccountOperationsFragment.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import android.view.View
55
import com.blogspot.e_kanivets.moneytracker.R
66
import com.blogspot.e_kanivets.moneytracker.activity.base.BaseFragment
77
import com.blogspot.e_kanivets.moneytracker.adapter.RecordAdapter
8+
import com.blogspot.e_kanivets.moneytracker.controller.FormatController
89
import com.blogspot.e_kanivets.moneytracker.controller.data.AccountController
910
import com.blogspot.e_kanivets.moneytracker.controller.data.RecordController
1011
import com.blogspot.e_kanivets.moneytracker.controller.data.TransferController
@@ -23,18 +24,20 @@ class AccountOperationsFragment : BaseFragment() {
2324
internal lateinit var recordController: RecordController
2425
@Inject
2526
internal lateinit var transferController: TransferController
27+
@Inject
28+
internal lateinit var formatController: FormatController
2629

2730
private lateinit var account: Account
2831

2932
override val contentViewId: Int = R.layout.fragment_account_operations
3033

3134
override fun initData() {
3235
appComponent.inject(this@AccountOperationsFragment)
33-
arguments?.let { arguments -> account = arguments.getParcelable(AccountOperationsFragment.KEY_ACCOUNT) }
36+
arguments?.let { arguments -> account = arguments.getParcelable(KEY_ACCOUNT) }
3437
}
3538

3639
override fun initViews(view: View) {
37-
listView.adapter = RecordAdapter(activity, getRecords())
40+
recyclerView.adapter = RecordAdapter(requireContext(), getRecords(), formatController, false)
3841
}
3942

4043
private fun getRecords(): List<Record> {

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/exchange_rate/ExchangeRatesActivity.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -107,14 +107,9 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
107107
super.onActivityResult(requestCode, resultCode, data);
108108

109109
if (resultCode == AppCompatActivity.RESULT_OK) {
110-
switch (requestCode) {
111-
case REQUEST_ADD_EXCHANGE_RATE:
112-
update();
113-
setResult(RESULT_OK);
114-
break;
115-
116-
default:
117-
break;
110+
if (requestCode == REQUEST_ADD_EXCHANGE_RATE) {
111+
update();
112+
setResult(RESULT_OK);
118113
}
119114
}
120115
}

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

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.blogspot.e_kanivets.moneytracker.activity.record
22

33
import android.content.Intent
44
import android.support.v7.app.AppCompatActivity
5+
import android.widget.AdapterView
56
import android.widget.TextView
67
import com.blogspot.e_kanivets.moneytracker.R
78
import com.blogspot.e_kanivets.moneytracker.activity.ReportActivity
@@ -18,7 +19,6 @@ import com.blogspot.e_kanivets.moneytracker.entity.Period
1819
import com.blogspot.e_kanivets.moneytracker.entity.data.Record
1920
import com.blogspot.e_kanivets.moneytracker.report.ReportMaker
2021
import com.blogspot.e_kanivets.moneytracker.ui.AppRateDialog
21-
import com.blogspot.e_kanivets.moneytracker.ui.presenter.ShortSummaryPresenter
2222
import com.blogspot.e_kanivets.moneytracker.util.AnswersProxy
2323
import kotlinx.android.synthetic.main.activity_main.*
2424
import kotlinx.android.synthetic.main.content_main.*
@@ -28,6 +28,7 @@ class MainActivity : BaseDrawerActivity() {
2828

2929
private lateinit var recordList: List<Record>
3030
private lateinit var period: Period
31+
private lateinit var recordAdapter: RecordAdapter
3132

3233
@Inject
3334
lateinit var recordController: RecordController
@@ -44,8 +45,6 @@ class MainActivity : BaseDrawerActivity() {
4445
@Inject
4546
lateinit var formatController: FormatController
4647

47-
private lateinit var summaryPresenter: ShortSummaryPresenter
48-
4948
private lateinit var tvDefaultAccountTitle: TextView
5049
private lateinit var tvDefaultAccountSum: TextView
5150
private lateinit var tvCurrency: TextView
@@ -57,7 +56,6 @@ class MainActivity : BaseDrawerActivity() {
5756
appComponent.inject(this)
5857

5958
preferenceController.addLaunchCount()
60-
summaryPresenter = ShortSummaryPresenter(this)
6159

6260
return super.initData()
6361
}
@@ -73,9 +71,12 @@ class MainActivity : BaseDrawerActivity() {
7371
tvDefaultAccountSum = navigationView.getHeaderView(0).findViewById(R.id.tvDefaultAccountSum)
7472
tvCurrency = navigationView.getHeaderView(0).findViewById(R.id.tvCurrency)
7573

76-
val summaryView = summaryPresenter.create(true)
77-
listView.addHeaderView(summaryView)
78-
summaryView.setOnClickListener { showReport() }
74+
recordAdapter = RecordAdapter(this, listOf(), formatController, true)
75+
recordAdapter.setOnItemClickListener(AdapterView.OnItemClickListener { _, _, position, _ ->
76+
if (position == 0) showReport()
77+
else editRecord(position)
78+
})
79+
recyclerView.adapter = recordAdapter
7980

8081
spinner.setPeriodSelectedListener { period ->
8182
this.period = period
@@ -85,17 +86,13 @@ class MainActivity : BaseDrawerActivity() {
8586

8687
spinner.setPeriod(periodController.readLastUsedPeriod())
8788

88-
listView.setOnItemClickListener { _, _, position, _ ->
89-
editRecord(position)
90-
}
91-
9289
btnAddExpense.setOnClickListener { addExpense() }
9390
btnAddIncome.setOnClickListener { addIncome() }
9491
}
9592

9693
private fun editRecord(position: Int) {
9794
AnswersProxy.get().logButton("Edit Record")
98-
// Minus one because of list view's header view
95+
9996
val record = recordList[position - 1]
10097
startAddRecordActivity(record, AddRecordActivity.Mode.MODE_EDIT, record.type)
10198
}
@@ -125,7 +122,7 @@ class MainActivity : BaseDrawerActivity() {
125122
REQUEST_ACTION_RECORD -> update()
126123

127124
REQUEST_BACKUP -> {
128-
appComponent.inject(this@MainActivity)
125+
appComponent.inject(this)
129126
update()
130127
}
131128

@@ -139,13 +136,12 @@ class MainActivity : BaseDrawerActivity() {
139136
recordList = recordController.getRecordsForPeriod(period)
140137
recordList = recordList.reversed()
141138

142-
listView.adapter = RecordAdapter(this, recordList)
143-
144139
val currency = currencyController.readDefaultCurrency()
145140

146141
val reportMaker = ReportMaker(rateController)
147142
val report = reportMaker.getRecordReport(currency, period, recordList)
148-
summaryPresenter.update(report, currency, reportMaker.currencyNeeded(currency, recordList))
143+
144+
recordAdapter.setRecords(recordList, report, currency, reportMaker.currencyNeeded(currency, recordList))
149145

150146
fillDefaultAccount()
151147
}
@@ -174,7 +170,6 @@ class MainActivity : BaseDrawerActivity() {
174170
}
175171

176172
companion object {
177-
private const val TAG = "MainActivity"
178173
private const val REQUEST_ACTION_RECORD = 6
179174
}
180175

app/src/main/java/com/blogspot/e_kanivets/moneytracker/adapter/AccountAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public View getView(final int position, View convertView, ViewGroup parent) {
101101
}
102102

103103
public static class ViewHolder {
104-
@BindView(R.id.tv_title)
104+
@BindView(R.id.tvTitle)
105105
TextView tvTitle;
106106
@BindView(R.id.tv_cur_sum)
107107
TextView tvCurSum;

app/src/main/java/com/blogspot/e_kanivets/moneytracker/adapter/CategoryAutoCompleteAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ protected void publishResults(CharSequence constraint, FilterResults results) {
9898
}
9999

100100
public static class ViewHolder {
101-
@BindView(R.id.tv_category)
101+
@BindView(R.id.tvCategory)
102102
TextView tvCategory;
103103
@BindView(R.id.iv_cancel)
104104
View ivCancel;

app/src/main/java/com/blogspot/e_kanivets/moneytracker/adapter/ExpandableListReportAdapter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,9 @@ private void customizeView(View view, Map<String, String> values, boolean groupV
9595
}
9696

9797
public static class ViewHolder {
98-
@BindView(R.id.tv_category)
98+
@BindView(R.id.tvCategory)
9999
TextView tvCategory;
100-
@BindView(R.id.tv_total)
100+
@BindView(R.id.tvTotal)
101101
TextView tvTotal;
102102

103103
public ViewHolder(View view) {

0 commit comments

Comments
 (0)