Browse Source

send money issue fixes and update beneficiary fixes

new_design
Mohan Shiwakoti 1 year ago
parent
commit
2e6b6f1227
  1. 108
      app/src/main/java/com/remit/jmecustomer/common/customwidgets/EndlessRecyclerViewScrollListener.java
  2. 54
      app/src/main/java/com/remit/jmecustomer/features/beneficiaryDetail/BeneficiaryDetailActivity.kt
  3. 6
      app/src/main/java/com/remit/jmecustomer/features/beneficiaryDetail/adapters/SendMethodAdapter.kt
  4. 68
      app/src/main/java/com/remit/jmecustomer/features/homeV3/view/HomeFragmentV3.kt
  5. 48
      app/src/main/java/com/remit/jmecustomer/features/myTransfers/view/MyBeneficiaryAllActivity.kt
  6. 75
      app/src/main/java/com/remit/jmecustomer/features/myTransfers/view/MyTransfersFragment.kt
  7. 19
      app/src/main/res/layout/fragment_beneficiary_all.xml
  8. 10
      app/src/main/res/layout/fragment_my_transfers.xml

108
app/src/main/java/com/remit/jmecustomer/common/customwidgets/EndlessRecyclerViewScrollListener.java

@ -0,0 +1,108 @@
package com.remit.jmecustomer.common.customwidgets;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
public abstract class EndlessRecyclerViewScrollListener extends RecyclerView.OnScrollListener {
// The minimum amount of items to have below your current scroll position
// before loading more.
private int visibleThreshold = 5;
// The current offset index of data you have loaded
private int currentPage = 0;
// The total number of items in the dataset after the last load
private int previousTotalItemCount = 0;
// True if we are still waiting for the last set of data to load.
private boolean loading = true;
// Sets the starting page index
private int startingPageIndex = 0;
RecyclerView.LayoutManager mLayoutManager;
public EndlessRecyclerViewScrollListener(LinearLayoutManager layoutManager) {
this.mLayoutManager = layoutManager;
}
public EndlessRecyclerViewScrollListener(GridLayoutManager layoutManager) {
this.mLayoutManager = layoutManager;
visibleThreshold = visibleThreshold * layoutManager.getSpanCount();
}
public EndlessRecyclerViewScrollListener(StaggeredGridLayoutManager layoutManager) {
this.mLayoutManager = layoutManager;
visibleThreshold = visibleThreshold * layoutManager.getSpanCount();
}
public int getLastVisibleItem(int[] lastVisibleItemPositions) {
int maxSize = 0;
for (int i = 0; i < lastVisibleItemPositions.length; i++) {
if (i == 0) {
maxSize = lastVisibleItemPositions[i];
}
else if (lastVisibleItemPositions[i] > maxSize) {
maxSize = lastVisibleItemPositions[i];
}
}
return maxSize;
}
// This happens many times a second during a scroll, so be wary of the code you place here.
// We are given a few useful parameters to help us work out if we need to load some more data,
// but first we check if we are waiting for the previous load to finish.
@Override
public void onScrolled(RecyclerView view, int dx, int dy) {
int lastVisibleItemPosition = 0;
int totalItemCount = mLayoutManager.getItemCount();
if (mLayoutManager instanceof StaggeredGridLayoutManager) {
int[] lastVisibleItemPositions = ((StaggeredGridLayoutManager) mLayoutManager).findLastVisibleItemPositions(null);
// get maximum element within the list
lastVisibleItemPosition = getLastVisibleItem(lastVisibleItemPositions);
} else if (mLayoutManager instanceof GridLayoutManager) {
lastVisibleItemPosition = ((GridLayoutManager) mLayoutManager).findLastVisibleItemPosition();
} else if (mLayoutManager instanceof LinearLayoutManager) {
lastVisibleItemPosition = ((LinearLayoutManager) mLayoutManager).findLastVisibleItemPosition();
}
// If the total item count is zero and the previous isn't, assume the
// list is invalidated and should be reset back to initial state
if (totalItemCount < previousTotalItemCount) {
this.currentPage = this.startingPageIndex;
this.previousTotalItemCount = totalItemCount;
if (totalItemCount == 0) {
this.loading = true;
}
}
// If its still loading, we check to see if the dataset count has
// changed, if so we conclude it has finished loading and update the current page
// number and total item count.
if (loading && (totalItemCount > previousTotalItemCount)) {
loading = false;
previousTotalItemCount = totalItemCount;
}
// If it isnt currently loading, we check to see if we have breached
// the visibleThreshold and need to reload more data.
// If we do need to reload some more data, we execute onLoadMore to fetch the data.
// threshold should reflect how many total columns there are too
if (!loading && (lastVisibleItemPosition + visibleThreshold) > totalItemCount) {
currentPage++;
onLoadMore(currentPage, totalItemCount, view);
loading = true;
}
}
// Call this method whenever performing new searches
public void resetState() {
this.currentPage = this.startingPageIndex;
this.previousTotalItemCount = 0;
this.loading = true;
}
// Defines the process for actually loading more data based on page
public abstract void onLoadMore(int page, int totalItemsCount, RecyclerView view);
}

54
app/src/main/java/com/remit/jmecustomer/features/beneficiaryDetail/BeneficiaryDetailActivity.kt

@ -11,13 +11,13 @@ import com.remit.jmecustomer.common.customwidgets.common.GenericPromptDialog
import com.remit.jmecustomer.common.customwidgets.common.GenericPromptDialog.GenericDialogPromptListener import com.remit.jmecustomer.common.customwidgets.common.GenericPromptDialog.GenericDialogPromptListener
import com.remit.jmecustomer.databinding.ActivityBeneficiaryDetailBinding import com.remit.jmecustomer.databinding.ActivityBeneficiaryDetailBinding
import com.remit.jmecustomer.features.beneficiaryDetail.adapters.SendMethodAdapter import com.remit.jmecustomer.features.beneficiaryDetail.adapters.SendMethodAdapter
import com.remit.jmecustomer.features.recipientlisting.view.recipientaddedit.RecipientAddEditActivity
import com.remit.jmecustomer.features.recipientmanagement.gateway.recipientlistingV3.RecipientListingV3Gateway import com.remit.jmecustomer.features.recipientmanagement.gateway.recipientlistingV3.RecipientListingV3Gateway
import com.remit.jmecustomer.features.recipientmanagement.model.recipientModelV5.Receiver import com.remit.jmecustomer.features.recipientmanagement.model.recipientModelV5.Receiver
import com.remit.jmecustomer.features.recipientmanagement.model.recipientlistingV3.PaymentMethodV3Model import com.remit.jmecustomer.features.recipientmanagement.model.recipientlistingV3.PaymentMethodV3Model
import com.remit.jmecustomer.features.recipientmanagement.model.recipientlistingV3.ReceiverInfoV3Model import com.remit.jmecustomer.features.recipientmanagement.model.recipientlistingV3.ReceiverInfoV3Model
import com.remit.jmecustomer.features.recipientmanagement.presenter.recipientlistingV3.RecipientListingV3Presenter import com.remit.jmecustomer.features.recipientmanagement.presenter.recipientlistingV3.RecipientListingV3Presenter
import com.remit.jmecustomer.features.recipientmanagement.presenter.recipientlistingV3.RecipientListingV3PresenterInterface import com.remit.jmecustomer.features.recipientmanagement.presenter.recipientlistingV3.RecipientListingV3PresenterInterface
import com.remit.jmecustomer.features.recipientmanagement.view.recepientTermsConditions.BeneficiaryAddEditV3TermsActivity
import com.remit.jmecustomer.features.recipientmanagement.view.recipientaddeditV3.RecipientAddEditV3Activity import com.remit.jmecustomer.features.recipientmanagement.view.recipientaddeditV3.RecipientAddEditV3Activity
import com.remit.jmecustomer.features.sendmoney.model.SendMoneyRequiredDataV3 import com.remit.jmecustomer.features.sendmoney.model.SendMoneyRequiredDataV3
import com.remit.jmecustomer.features.sendmoney.view.SendMoneyV2Activity import com.remit.jmecustomer.features.sendmoney.view.SendMoneyV2Activity
@ -50,6 +50,7 @@ class BeneficiaryDetailActivity : BaseActivity(),
binding.rvPayType.layoutManager = layoutManagerVertical binding.rvPayType.layoutManager = layoutManagerVertical
receiverInfoModel = ReceiverInfoV3Model() receiverInfoModel = ReceiverInfoV3Model()
receiver = intent.extras?.getParcelable("receiverInfoModel") receiver = intent.extras?.getParcelable("receiverInfoModel")
receiver?.paymentMethods?.get(0)?.isSelected = true
sendMethodAdapter = SendMethodAdapter(receiver?.paymentMethods!!) sendMethodAdapter = SendMethodAdapter(receiver?.paymentMethods!!)
binding.rvPayType.adapter = sendMethodAdapter binding.rvPayType.adapter = sendMethodAdapter
sendMethodAdapter?.setOnItemClickListener(object : SendMethodAdapter.ItemClickListener { sendMethodAdapter?.setOnItemClickListener(object : SendMethodAdapter.ItemClickListener {
@ -103,29 +104,47 @@ class BeneficiaryDetailActivity : BaseActivity(),
binding.tvLocation.text = receiverInfoModel?.country binding.tvLocation.text = receiverInfoModel?.country
binding.tvInitial.text = getInitials(receiverInfoModel?.fullName ?: "") binding.tvInitial.text = getInitials(receiverInfoModel?.fullName ?: "")
binding.tvUpdate.setOnClickListener { binding.tvUpdate.setOnClickListener {
val intent = Intent(applicationContext, RecipientAddEditActivity::class.java)
intent.putExtra(RecipientAddEditActivity.RECIPIENT_INFO_BUNDLE_KEY, receiverInfoModel)
val intent = Intent(applicationContext, RecipientAddEditV3Activity::class.java)
intent.putExtra(
RecipientAddEditV3Activity.RECIPIENT_INFO_BUNDLE_KEY_v3,
receiverInfoModel
)
startActivityForResult( startActivityForResult(
intent, intent,
RecipientAddEditActivity.RECIPIENT_INFO_ACTION_EDIT_REQUEST_CODE
RecipientAddEditV3Activity.RECIPIENT_ACTION_EDIT_REQUEST_CODE_v3
) )
} }
binding.agreeButton.setOnClickListener { binding.agreeButton.setOnClickListener {
if (isPaymentSelected) { if (isPaymentSelected) {
val intent = Intent(
this@BeneficiaryDetailActivity,
SendMoneyV2Activity::class.java
)
val sendMoneyRequiredDataV3 = SendMoneyRequiredDataV3(receiverInfoModel)
intent.putExtra(
RecipientAddEditV3Activity.RECIPIENT_INFO_BUNDLE_KEY_v3,
sendMoneyRequiredDataV3
)
startActivityForResult(
intent,
RecipientAddEditV3Activity.RECIPIENT_ACTION_EDIT_REQUEST_CODE_v3
)
if (receiverInfoModel?.hasVerifiedOTP!!) {
val intent = Intent(
this@BeneficiaryDetailActivity,
SendMoneyV2Activity::class.java
)
val sendMoneyRequiredDataV3 = SendMoneyRequiredDataV3(receiverInfoModel)
intent.putExtra(
RecipientAddEditV3Activity.RECIPIENT_INFO_BUNDLE_KEY_v3,
sendMoneyRequiredDataV3
)
startActivityForResult(
intent,
RecipientAddEditV3Activity.RECIPIENT_ACTION_EDIT_REQUEST_CODE_v3
)
} else {
val intent = Intent(
applicationContext,
BeneficiaryAddEditV3TermsActivity::class.java
)
intent.putExtra(
BeneficiaryAddEditV3TermsActivity.RECIPIENT_TERMS_BUNDLE_KEY_v3,
receiverInfoModel
)
startActivityForResult(
intent,
RecipientAddEditV3Activity.RECIPIENT_ACTION_EDIT_REQUEST_CODE_v3
)
}
} else { } else {
Toast.makeText( Toast.makeText(
applicationContext, applicationContext,
@ -134,7 +153,6 @@ class BeneficiaryDetailActivity : BaseActivity(),
).show() ).show()
} }
} }
} }
private fun getInitials(fullName: String): String { private fun getInitials(fullName: String): String {

6
app/src/main/java/com/remit/jmecustomer/features/beneficiaryDetail/adapters/SendMethodAdapter.kt

@ -13,7 +13,7 @@ import com.remit.jmecustomer.features.recipientmanagement.model.recipientlisting
class SendMethodAdapter(private val items: List<PaymentMethodV3Model>) : class SendMethodAdapter(private val items: List<PaymentMethodV3Model>) :
RecyclerView.Adapter<SendMethodAdapter.ViewHolder>() { RecyclerView.Adapter<SendMethodAdapter.ViewHolder>() {
var itemClickListener: ItemClickListener? = null var itemClickListener: ItemClickListener? = null
private var lastPosition = -1
private var lastPosition = 0
class ViewHolder(private val binding: RowSendMethodBinding) : class ViewHolder(private val binding: RowSendMethodBinding) :
RecyclerView.ViewHolder(binding.root) { RecyclerView.ViewHolder(binding.root) {
@ -39,10 +39,8 @@ class SendMethodAdapter(private val items: List<PaymentMethodV3Model>) :
@SuppressLint("NotifyDataSetChanged") @SuppressLint("NotifyDataSetChanged")
override fun onBindViewHolder(holder: ViewHolder, @SuppressLint("RecyclerView") position: Int) { override fun onBindViewHolder(holder: ViewHolder, @SuppressLint("RecyclerView") position: Int) {
val item = items[position] val item = items[position]
itemClickListener?.onItemClicked(items[0])
holder.itemView.setOnClickListener { holder.itemView.setOnClickListener {
if (lastPosition > -1) {
items[lastPosition].isSelected = false
}
itemClickListener?.onItemClicked(item) itemClickListener?.onItemClicked(item)
item.isSelected = true item.isSelected = true
lastPosition = position lastPosition = position

68
app/src/main/java/com/remit/jmecustomer/features/homeV3/view/HomeFragmentV3.kt

@ -507,44 +507,46 @@ class HomeFragmentV3 : BaseFragment(), View.OnClickListener,
var timer: Timer? = null; var timer: Timer? = null;
fun setBannerData(bannerImages: MutableList<BannerImage>) { fun setBannerData(bannerImages: MutableList<BannerImage>) {
val bannerViewAdapter = BannerViewAdapter(bannerImages)
val lm = LinearLayoutManager(
binding.bannerView.getContext(),
LinearLayoutManager.HORIZONTAL,
false
)
binding.bannerView.layoutManager = lm
binding.bannerView.adapter = bannerViewAdapter
binding.bannerView.setOnFlingListener(null)
val snapHelper = PagerSnapHelper()
snapHelper.attachToRecyclerView(binding.bannerView)
try {
val bannerViewAdapter = BannerViewAdapter(bannerImages)
val lm = LinearLayoutManager(
binding.bannerView.getContext(),
LinearLayoutManager.HORIZONTAL,
false
)
binding.bannerView.layoutManager = lm
binding.bannerView.adapter = bannerViewAdapter
binding.bannerView.setOnFlingListener(null)
val snapHelper = PagerSnapHelper()
snapHelper.attachToRecyclerView(binding.bannerView)
if (bannerImages.size > 1) {
if (bannerImages.size > 1) {
// bannerView.addItemDecoration(new LinePagerIndicatorDecoration()); // bannerView.addItemDecoration(new LinePagerIndicatorDecoration());
binding.indicator.attachToRecyclerView(binding.bannerView, snapHelper)
}
binding.indicator.attachToRecyclerView(binding.bannerView, snapHelper)
}
if (timer != null) return
timer = Timer()
timer!!.scheduleAtFixedRate(object : TimerTask() {
override fun run() {
if (scrollPosition >= bannerImages.size) scrollPosition = 0
binding.bannerView.post { // scrollPosition = lm.findFirstVisibleItemPosition();
scrollPosition =
binding.indicator.getSnapPosition(binding.bannerView.layoutManager);
++scrollPosition
if (scrollPosition > bannerImages.size - 1) {
scrollPosition = 0
binding.bannerView.scrollToPosition(scrollPosition)
} else {
binding.bannerView.smoothScrollToPosition(scrollPosition)
if (timer != null) return
timer = Timer()
timer!!.scheduleAtFixedRate(object : TimerTask() {
override fun run() {
if (scrollPosition >= bannerImages.size) scrollPosition = 0
binding.bannerView.post { // scrollPosition = lm.findFirstVisibleItemPosition();
scrollPosition =
binding.indicator.getSnapPosition(binding.bannerView.layoutManager);
++scrollPosition
if (scrollPosition > bannerImages.size - 1) {
scrollPosition = 0
binding.bannerView.scrollToPosition(scrollPosition)
} else {
binding.bannerView.smoothScrollToPosition(scrollPosition)
}
} }
} }
}
}, 500, 3500)
}, 500, 3500)
} catch (ex: java.lang.Exception) {
ex.printStackTrace()
}
} }
private fun showNotificationView(notificationViewDTO: HomeNotificationViewDTO) { private fun showNotificationView(notificationViewDTO: HomeNotificationViewDTO) {

48
app/src/main/java/com/remit/jmecustomer/features/myTransfers/view/MyBeneficiaryAllActivity.kt

@ -3,10 +3,12 @@ package com.remit.jmecustomer.features.myTransfers.view
import MyBeneficiariesAllAdapter import MyBeneficiariesAllAdapter
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.text.Editable
import android.view.View import android.view.View
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.remit.jmecustomer.R import com.remit.jmecustomer.R
import com.remit.jmecustomer.base.BaseActivity import com.remit.jmecustomer.base.BaseActivity
import com.remit.jmecustomer.common.customwidgets.TextWatcherAdapter
import com.remit.jmecustomer.common.customwidgets.common.GenericEditTextPromptDialog import com.remit.jmecustomer.common.customwidgets.common.GenericEditTextPromptDialog
import com.remit.jmecustomer.common.customwidgets.common.GenericPromptDialog import com.remit.jmecustomer.common.customwidgets.common.GenericPromptDialog
import com.remit.jmecustomer.databinding.FragmentBeneficiaryAllBinding import com.remit.jmecustomer.databinding.FragmentBeneficiaryAllBinding
@ -20,6 +22,8 @@ import com.remit.jmecustomer.features.recipientmanagement.presenter.recipientlis
import com.remit.jmecustomer.features.recipientmanagement.view.recepientTermsConditions.BeneficiaryAddEditV3TermsActivity import com.remit.jmecustomer.features.recipientmanagement.view.recepientTermsConditions.BeneficiaryAddEditV3TermsActivity
import com.remit.jmecustomer.features.recipientmanagement.view.recipientaddeditV3.RecipientAddEditV3Activity import com.remit.jmecustomer.features.recipientmanagement.view.recipientaddeditV3.RecipientAddEditV3Activity
import com.remit.jmecustomer.features.sendmoney.model.SendMoneyRequiredDataV3 import com.remit.jmecustomer.features.sendmoney.model.SendMoneyRequiredDataV3
import java.util.*
import kotlin.collections.ArrayList
class MyBeneficiaryAllActivity : BaseActivity(), class MyBeneficiaryAllActivity : BaseActivity(),
MyBeneficiariesAllAdapter.RecipientSelectionListener, MyBeneficiariesAllAdapter.RecipientSelectionListener,
@ -30,6 +34,7 @@ class MyBeneficiaryAllActivity : BaseActivity(),
private var mainList: ArrayList<Receiver>? = ArrayList() private var mainList: ArrayList<Receiver>? = ArrayList()
var presenter: RecipientListingV3PresenterInterface? = null var presenter: RecipientListingV3PresenterInterface? = null
private var genericEditTextPromptDialog: GenericEditTextPromptDialog? = null private var genericEditTextPromptDialog: GenericEditTextPromptDialog? = null
private var data: MutableList<Receiver>? = null
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@ -46,13 +51,14 @@ class MyBeneficiaryAllActivity : BaseActivity(),
fun init() { fun init() {
presenter = RecipientListingV3Presenter(this, RecipientListingV3Gateway()) presenter = RecipientListingV3Presenter(this, RecipientListingV3Gateway())
presenter!!.getAllRecipientListV5(null, "0", "","","")
presenter!!.getAllRecipientListV5(null, "0", "", "", "")
var data: ArrayList<Receiver> = ArrayList() var data: ArrayList<Receiver> = ArrayList()
adapter = MyBeneficiariesAllAdapter(data, this) adapter = MyBeneficiariesAllAdapter(data, this)
val layoutManagerVertical = LinearLayoutManager(this) val layoutManagerVertical = LinearLayoutManager(this)
binding.recipientListRv.layoutManager = layoutManagerVertical binding.recipientListRv.layoutManager = layoutManagerVertical
binding.recipientListRv.adapter = adapter binding.recipientListRv.adapter = adapter
adapter?.setData(mainList) adapter?.setData(mainList)
binding.edtSearchTransfers.addTextChangedListener(SearchEdittextTextChangeListener())
} }
@ -75,6 +81,9 @@ class MyBeneficiaryAllActivity : BaseActivity(),
recentTransactionList: MutableList<RecentTransaction>?, recentTransactionList: MutableList<RecentTransaction>?,
changeLayoutBehavior: Boolean changeLayoutBehavior: Boolean
) { ) {
if (data == null) {
data = recipientInfoModelList
}
adapter?.setData(recipientInfoModelList) adapter?.setData(recipientInfoModelList)
} }
@ -183,4 +192,41 @@ class MyBeneficiaryAllActivity : BaseActivity(),
} }
override fun onAllRecipientDeleted() {} override fun onAllRecipientDeleted() {}
inner class SearchEdittextTextChangeListener : TextWatcherAdapter() {
override fun afterTextChanged(s: Editable) {
searchForText(s.toString())
}
}
fun searchForText(keyWord: String) {
// if (keyWord.length > 0) {
try {
val searchedData: MutableList<Receiver> =
java.util.ArrayList()
for (item in data!!) {
if (item.fullName.lowercase(Locale.getDefault())
.contains(keyWord.lowercase(Locale.getDefault()))
) {
searchedData.add(item)
}
}
if (searchedData.size > 0) {
// showTransactionNotFoundView(false)
} else {
// showTransactionNotFoundView(
// true
// )
return
}
adapter?.setData(searchedData)
// } else {
// hideKeyBoard()
//// showTransactionNotFoundView(false)
//// recentAdapter?.setData(data!!)
// }
} catch (ex: java.lang.Exception) {
ex.printStackTrace()
}
}
} }

75
app/src/main/java/com/remit/jmecustomer/features/myTransfers/view/MyTransfersFragment.kt

@ -12,8 +12,10 @@ import android.view.ViewGroup
import android.widget.EditText import android.widget.EditText
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.remit.jmecustomer.R import com.remit.jmecustomer.R
import com.remit.jmecustomer.base.BaseFragment import com.remit.jmecustomer.base.BaseFragment
import com.remit.jmecustomer.common.customwidgets.EndlessRecyclerViewScrollListener
import com.remit.jmecustomer.common.customwidgets.TextWatcherAdapter import com.remit.jmecustomer.common.customwidgets.TextWatcherAdapter
import com.remit.jmecustomer.common.customwidgets.common.GenericEditTextPromptDialog import com.remit.jmecustomer.common.customwidgets.common.GenericEditTextPromptDialog
import com.remit.jmecustomer.common.customwidgets.common.GenericEditTextPromptDialog.GenericEditTextPromptListener import com.remit.jmecustomer.common.customwidgets.common.GenericEditTextPromptDialog.GenericEditTextPromptListener
@ -66,6 +68,14 @@ class MyTransfersFragment : BaseFragment(),
private var presenterTransaction: TransactionHistoryV2Presenter? = null private var presenterTransaction: TransactionHistoryV2Presenter? = null
private var genericEditTextPromptDialog: GenericEditTextPromptDialog? = null private var genericEditTextPromptDialog: GenericEditTextPromptDialog? = null
private var homeViewModel: HomeViewModel? = null private var homeViewModel: HomeViewModel? = null
var currentPage = 1
var totalPages = 100
var scrollListener: EndlessRecyclerViewScrollListener? = null
var startDate = ""
var endDate = ""
var isRecentEmpty = false
var isFirstCall = false;
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, inflater: LayoutInflater,
container: ViewGroup?, container: ViewGroup?,
@ -98,7 +108,48 @@ class MyTransfersFragment : BaseFragment(),
binding.transactionHistoryRv.adapter = recentAdapter binding.transactionHistoryRv.adapter = recentAdapter
binding.recipientListRv.isNestedScrollingEnabled = false binding.recipientListRv.isNestedScrollingEnabled = false
binding.transactionHistoryRv.isNestedScrollingEnabled = false
// binding.transactionHistoryRv.isNestedScrollingEnabled = false
binding.nestedScrollView.isNestedScrollingEnabled = false
scrollListener = object : EndlessRecyclerViewScrollListener(layoutManagerVertical) {
override fun onLoadMore(page: Int, totalItemsCount: Int, view: RecyclerView?) {
if (currentPage <= totalPages && recentAdapter?.itemCount!! > 5) {
currentPage++
Handler().postDelayed({
presenter?.getAllRecipientListV5(
null,
Constants.CURRENT_COUNTRY_ID,
this@MyTransfersFragment.startDate,
this@MyTransfersFragment.endDate,
this@MyTransfersFragment.currentPage.toString()
)
}, 1500)
}
}
}
binding.recipientListRv.addOnScrollListener(scrollListener!!)
binding.nestedScrollView.viewTreeObserver.addOnScrollChangedListener {
// val view = binding.nestedScrollView.getChildAt(binding.nestedScrollView.childCount - 1)
// val diff =
// view.bottom - (binding.nestedScrollView.height + binding.nestedScrollView.scrollY)
//
// // Check if the user has reached the bottom of the scroll view
// if (diff <= 0 && binding.nestedScrollView.scrollY > 0) {
// if (!isRecentEmpty) {
// currentPage++
// Handler().postDelayed({
// presenter?.getAllRecipientListV5(
// null,
// Constants.CURRENT_COUNTRY_ID,
// this@MyTransfersFragment.startDate,
// this@MyTransfersFragment.endDate,
// this@MyTransfersFragment.currentPage.toString()
// )
// }, 1500)
// }
// }
}
} }
override fun onStart() { override fun onStart() {
@ -139,6 +190,7 @@ class MyTransfersFragment : BaseFragment(),
fun performDefaultAction(countryId: String?) { fun performDefaultAction(countryId: String?) {
// iv_cancel!!.visibility = View.INVISIBLE // iv_cancel!!.visibility = View.INVISIBLE
currentPage = 1
presenter!!.getAllRecipientListV5(null, countryId, "", "", "") presenter!!.getAllRecipientListV5(null, countryId, "", "", "")
} }
@ -156,9 +208,24 @@ class MyTransfersFragment : BaseFragment(),
) { ) {
adapter?.setData(recipientInfoModelList) adapter?.setData(recipientInfoModelList)
if (data == null) { if (data == null) {
if (currentPage > 1) {
isRecentEmpty = true
}
data = recentTransactionList data = recentTransactionList
} else {
if (recentTransactionList != null && recentTransactionList.isEmpty()) {
isFirstCall = false
if (currentPage > 1) {
isRecentEmpty = true
}
}
if (currentPage == 1) {
data = recentTransactionList
} else {
data?.addAll(recentTransactionList!!)
}
} }
recentAdapter?.setData(recentTransactionList)
recentAdapter?.setData(data)
recentAdapter?.setTransactionClickListener(object : recentAdapter?.setTransactionClickListener(object :
RecentTransactionsAdapter.OutboundTransactionItemClickListener { RecentTransactionsAdapter.OutboundTransactionItemClickListener {
override fun navigateToChangeTransactionScreen(itemModel: RecentTransaction) { override fun navigateToChangeTransactionScreen(itemModel: RecentTransaction) {
@ -524,12 +591,14 @@ class MyTransfersFragment : BaseFragment(),
if (binding.dateContainer.getVisibility() != View.VISIBLE) binding.dateContainer.setVisibility( if (binding.dateContainer.getVisibility() != View.VISIBLE) binding.dateContainer.setVisibility(
View.VISIBLE View.VISIBLE
) )
this@MyTransfersFragment.startDate = startDate
this@MyTransfersFragment.endDate = endDate
presenter!!.getAllRecipientListV5( presenter!!.getAllRecipientListV5(
null, null,
Constants.CURRENT_COUNTRY_ID, Constants.CURRENT_COUNTRY_ID,
startDate, startDate,
endDate, endDate,
"5"
"1"
) )
} }
}) })

19
app/src/main/res/layout/fragment_beneficiary_all.xml

@ -10,8 +10,27 @@
layout="@layout/toolbaar_new" layout="@layout/toolbaar_new"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<EditText
app:layout_constraintTop_toBottomOf="@+id/toolbar"
style="@style/TextStyle.VolteSemiBold14"
android:id="@+id/edt_search_transfers"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_10sdp"
android:layout_marginTop="@dimen/_10sdp"
android:layout_marginEnd="@dimen/_10sdp"
android:textColor="@color/light_blue"
android:inputType="text"
android:imeOptions="actionDone"
android:background="@drawable/blue_border_background"
android:hint="Search your transfers"
android:padding="@dimen/_10sdp"
app:layout_constraintStart_toStartOf="parent"
/>
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:layout_marginTop="@dimen/_10sdp"
android:id="@+id/recipientListRv" android:id="@+id/recipientListRv"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" /> android:layout_height="wrap_content" />

10
app/src/main/res/layout/fragment_my_transfers.xml

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" <androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nestedScrollView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
@ -242,6 +243,15 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/dateContainer" /> app:layout_constraintTop_toBottomOf="@+id/dateContainer" />
<ProgressBar
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/transactionHistoryRv"
android:id="@+id/progress_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<com.remit.jmecustomer.common.customwidgets.GmeEditText <com.remit.jmecustomer.common.customwidgets.GmeEditText
android:paddingTop="50dp" android:paddingTop="50dp"
android:id="@+id/noTransactionFoundTextView" android:id="@+id/noTransactionFoundTextView"

Loading…
Cancel
Save