diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d28cf451..6ff46135 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -86,6 +86,8 @@
+
+
diff --git a/app/src/main/java/org/apache/fineract/injection/component/ActivityComponent.java b/app/src/main/java/org/apache/fineract/injection/component/ActivityComponent.java
index 6c250f80..a63fb63d 100644
--- a/app/src/main/java/org/apache/fineract/injection/component/ActivityComponent.java
+++ b/app/src/main/java/org/apache/fineract/injection/component/ActivityComponent.java
@@ -4,7 +4,7 @@
import org.apache.fineract.injection.module.ActivityModule;
import org.apache.fineract.ui.offline.CustomerPayloadFragment;
import org.apache.fineract.ui.online.DashboardActivity;
-import org.apache.fineract.ui.online.accounting.accounts.AccountsFragment;
+import org.apache.fineract.ui.online.accounting.accounts.accountList.AccountsFragment;
import org.apache.fineract.ui.online.accounting.ledgers.LedgerFragment;
import org.apache.fineract.ui.online.customers.createcustomer.customeractivity
.CreateCustomerActivity;
diff --git a/app/src/main/java/org/apache/fineract/ui/adapters/AccountsAdapter.kt b/app/src/main/java/org/apache/fineract/ui/adapters/AccountsAdapter.kt
index 6205ad7f..3de52f9f 100644
--- a/app/src/main/java/org/apache/fineract/ui/adapters/AccountsAdapter.kt
+++ b/app/src/main/java/org/apache/fineract/ui/adapters/AccountsAdapter.kt
@@ -6,11 +6,13 @@ import androidx.recyclerview.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.AdapterView
import android.widget.TextView
import kotlinx.android.synthetic.main.item_account.view.*
import org.apache.fineract.R
import org.apache.fineract.data.models.accounts.Account
import org.apache.fineract.injection.ApplicationContext
+import org.apache.fineract.ui.base.OnItemClickListener
import org.apache.fineract.utils.DateUtils
import org.apache.fineract.utils.StatusUtils
import javax.inject.Inject
@@ -20,6 +22,8 @@ class AccountsAdapter @Inject constructor(@ApplicationContext val context: Conte
var accounts: List = ArrayList()
+ lateinit var onItemClickListener: OnItemClickListener
+
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent?.context).inflate(R.layout.item_account, parent, false)
@@ -55,12 +59,25 @@ class AccountsAdapter @Inject constructor(@ApplicationContext val context: Conte
notifyDataSetChanged()
}
- class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ fun setItemClickListener(onItemClickListener: OnItemClickListener) {
+ this.onItemClickListener = onItemClickListener
+ }
+
+ inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener {
val tvIdentifier: TextView = itemView.tv_account_identifier
val tvModifiedBy: TextView = itemView.tv_modified_by
val tvModifiedOn: TextView = itemView.tv_modified_on
val tvName: TextView = itemView.tv_name
val ivAccountTypeIndicator: AppCompatImageView = itemView.iv_type_indicator
+
+ init {
+ itemView.ll_account.setOnClickListener(this)
+ }
+
+ override fun onClick(v: View?) {
+ if (onItemClickListener != null)
+ onItemClickListener.onItemClick(v, adapterPosition)
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/ui/online/DashboardActivity.java b/app/src/main/java/org/apache/fineract/ui/online/DashboardActivity.java
index 15b4d61f..66300ee9 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/DashboardActivity.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/DashboardActivity.java
@@ -25,7 +25,7 @@
import org.apache.fineract.ui.base.Toaster;
import org.apache.fineract.ui.offline.CustomerPayloadFragment;
import org.apache.fineract.ui.online.accounting.ledgers.LedgerFragment;
-import org.apache.fineract.ui.online.accounting.accounts.AccountsFragment;
+import org.apache.fineract.ui.online.accounting.accounts.accountList.AccountsFragment;
import org.apache.fineract.ui.online.customers.customerlist.CustomersFragment;
import org.apache.fineract.ui.online.dashboard.DashboardFragment;
import org.apache.fineract.ui.online.launcher.LauncherActivity;
diff --git a/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountContract.kt b/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountList/AccountContract.kt
similarity index 89%
rename from app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountContract.kt
rename to app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountList/AccountContract.kt
index 9491718e..b904cea5 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountContract.kt
+++ b/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountList/AccountContract.kt
@@ -1,4 +1,4 @@
-package org.apache.fineract.ui.online.accounting.accounts
+package org.apache.fineract.ui.online.accounting.accounts.accountList
import org.apache.fineract.data.models.accounts.Account
import org.apache.fineract.ui.base.MvpView
diff --git a/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountsFragment.kt b/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountList/AccountsFragment.kt
similarity index 86%
rename from app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountsFragment.kt
rename to app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountList/AccountsFragment.kt
index 67c27d8a..a2b02710 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountsFragment.kt
+++ b/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountList/AccountsFragment.kt
@@ -1,13 +1,15 @@
-package org.apache.fineract.ui.online.accounting.accounts
+package org.apache.fineract.ui.online.accounting.accounts.accountList
import android.app.SearchManager
import android.content.Context
+import android.content.Intent
import android.os.Bundle
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.appcompat.widget.SearchView
import android.text.TextUtils
import android.view.*
+import android.widget.Toast
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.fragment_accounts.*
import kotlinx.android.synthetic.main.layout_exception_handler.*
@@ -16,11 +18,14 @@ import org.apache.fineract.data.models.accounts.Account
import org.apache.fineract.ui.adapters.AccountsAdapter
import org.apache.fineract.ui.base.FineractBaseActivity
import org.apache.fineract.ui.base.FineractBaseFragment
+import org.apache.fineract.ui.base.OnItemClickListener
+import org.apache.fineract.ui.online.accounting.accounts.accountdetails.AccountDetailActivity
+import org.apache.fineract.utils.ConstantKeys
import java.util.*
import javax.inject.Inject
-class AccountsFragment : FineractBaseFragment(), AccountContract.View, SwipeRefreshLayout.OnRefreshListener {
+class AccountsFragment : FineractBaseFragment(), AccountContract.View, SwipeRefreshLayout.OnRefreshListener, OnItemClickListener {
@Inject
lateinit var accountsPresenter: AccountsPresenter
@@ -28,7 +33,7 @@ class AccountsFragment : FineractBaseFragment(), AccountContract.View, SwipeRefr
@Inject
lateinit var accountsAdapter: AccountsAdapter
- lateinit var accountList : List
+ lateinit var accountList: List
companion object {
fun newInstance() = AccountsFragment()
@@ -37,7 +42,7 @@ class AccountsFragment : FineractBaseFragment(), AccountContract.View, SwipeRefr
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
- accountList= ArrayList()
+ accountList = ArrayList()
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
@@ -71,6 +76,7 @@ class AccountsFragment : FineractBaseFragment(), AccountContract.View, SwipeRefr
rvAccount.setHasFixedSize(true)
rvAccount.adapter = accountsAdapter
+ accountsAdapter.setItemClickListener(this)
swipeContainer.setColorSchemeColors(*activity!!
.resources.getIntArray(R.array.swipeRefreshColors))
@@ -159,6 +165,16 @@ class AccountsFragment : FineractBaseFragment(), AccountContract.View, SwipeRefr
showFineractErrorUI(getString(R.string.accounts))
}
+ override fun onItemClick(childView: View?, position: Int) {
+ var intent = Intent(context, AccountDetailActivity::class.java)
+ intent.putExtra(ConstantKeys.ACCOUNT, accountList.get(position))
+ startActivity(intent)
+ }
+
+ override fun onItemLongPress(childView: View?, position: Int) {
+
+ }
+
override fun onDestroyView() {
super.onDestroyView()
accountsPresenter.detachView()
diff --git a/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountsPresenter.kt b/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountList/AccountsPresenter.kt
similarity index 97%
rename from app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountsPresenter.kt
rename to app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountList/AccountsPresenter.kt
index d8e61163..f07aa810 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountsPresenter.kt
+++ b/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountList/AccountsPresenter.kt
@@ -1,4 +1,4 @@
-package org.apache.fineract.ui.online.accounting.accounts
+package org.apache.fineract.ui.online.accounting.accounts.accountList
import android.content.Context
import io.reactivex.Observable
diff --git a/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountdetails/AccountDetailActivity.kt b/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountdetails/AccountDetailActivity.kt
new file mode 100644
index 00000000..133e14e9
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountdetails/AccountDetailActivity.kt
@@ -0,0 +1,59 @@
+package org.apache.fineract.ui.online.accounting.accounts.accountdetails
+
+import android.os.Bundle
+import kotlinx.android.synthetic.main.activity_account_detail.*
+import org.apache.fineract.R
+import org.apache.fineract.data.models.accounts.Account
+import org.apache.fineract.ui.base.FineractBaseActivity
+import org.apache.fineract.utils.ConstantKeys
+
+class AccountDetailActivity : FineractBaseActivity() {
+
+ lateinit var account: Account
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_account_detail)
+
+ account = intent.getParcelableExtra(ConstantKeys.ACCOUNT)
+ setToolbarTitle(getString(R.string.account_details))
+ showBackButton()
+ populateUserInterface()
+ }
+
+ fun populateUserInterface() {
+ tvType.text = account.type.toString()
+ tvIdentifier.text = account.identifier
+ tvName.text = account.name
+ tvLedger.text = account.ledger
+ tvState.text = account.state.toString()
+ tvAlternativeAccountNumber.text = account.alternativeAccountNumber
+ tvBalance.text = "$ ${account.balance}"
+ tvReferenceAmount.text = "$ ${account.referenceAccount}"
+ tvCreateOn.text = account.createdOn
+ tvCreatedBy.text = account.createdBy
+ tvLastModifiedBy.text = account.lastModifiedBy
+ tvLastModifiedOn.text = account.lastModifiedOn
+
+ tvHolders.text = "\n"
+ if (account.holders?.size != 0) {
+ var accountIterator = account.holders?.iterator()
+ while (accountIterator!!.hasNext()) {
+ tvHolders.append("${accountIterator.next()}\n")
+ }
+ } else {
+ tvHolders.append("${getString(R.string.no_holder_found)}\n")
+ }
+
+ tvSignatureAuthorities.text = "\n"
+ if (account.signatureAuthorities?.size != 0) {
+ var signatureAuthoritiesIterator = account.signatureAuthorities?.iterator()
+ while (signatureAuthoritiesIterator!!.hasNext()) {
+ tvSignatureAuthorities.append("${signatureAuthoritiesIterator.next()}\n")
+ }
+ } else {
+ tvSignatureAuthorities.append("${getString(R.string.no_signature_authorities_found)}\n")
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/utils/ConstantKeys.java b/app/src/main/java/org/apache/fineract/utils/ConstantKeys.java
index 028076b8..2eaec1a7 100644
--- a/app/src/main/java/org/apache/fineract/utils/ConstantKeys.java
+++ b/app/src/main/java/org/apache/fineract/utils/ConstantKeys.java
@@ -2,11 +2,11 @@
/**
* @author Rajan Maurya
- * On 27/06/17.
+ * On 27/06/17.
*/
public class ConstantKeys {
- public static final String CUSTOMER_IDENTIFIER = "customer_identifier";
+ public static final String CUSTOMER_IDENTIFIER = "customer_identifier";
public static final String CUSTOMER_STATUS = "customer_status";
public static final String IS_NEW_CUSTOMER = "is_new_customer";
public static final String CUSTOMER_ACTION = "customer_action";
@@ -40,4 +40,5 @@ public class ConstantKeys {
public static final int PERMISSION_REQUEST_READ_EXTERNAL_STORAGE = 3;
public static final String PERMISSIONS_READ_EXTERNAL_STORAGE_STATUS = "read_status";
+ public static final String ACCOUNT = "account";
}
diff --git a/app/src/main/res/layout/activity_account_detail.xml b/app/src/main/res/layout/activity_account_detail.xml
new file mode 100644
index 00000000..4edb3318
--- /dev/null
+++ b/app/src/main/res/layout/activity_account_detail.xml
@@ -0,0 +1,361 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 78fa8ad2..78c1f843 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -38,6 +38,8 @@
180dp
8dp
+ 16dp
+ 8dp
225dp
256dp
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 8744d5d9..acfaa779 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -210,6 +210,14 @@
Identification card scan
Role
%1$s %2$s
+ State
+ Reference Amount
+ Alternative Account Number
+ Holders
+ Signature Authorities
+ Account Details
+ No Holder Found
+ No Signature Authorities Found
Account*
diff --git a/app/src/test/java/org/apache/fineract/online/AccountPresenterTest.kt b/app/src/test/java/org/apache/fineract/online/AccountPresenterTest.kt
index 96cddcfc..f3dd57de 100644
--- a/app/src/test/java/org/apache/fineract/online/AccountPresenterTest.kt
+++ b/app/src/test/java/org/apache/fineract/online/AccountPresenterTest.kt
@@ -6,11 +6,10 @@ import org.apache.fineract.FakeRemoteDataSource
import org.apache.fineract.data.datamanager.DataManagerAccounting
import org.apache.fineract.data.models.accounts.AccountPage
import org.apache.fineract.exceptions.NoConnectivityException
-import org.apache.fineract.ui.online.accounting.accounts.AccountContract
-import org.apache.fineract.ui.online.accounting.accounts.AccountsPresenter
+import org.apache.fineract.ui.online.accounting.accounts.accountList.AccountContract
+import org.apache.fineract.ui.online.accounting.accounts.accountList.AccountsPresenter
import org.apache.fineract.util.RxSchedulersOverrideRule
import org.junit.After
-import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Rule
import org.junit.Test