Я хочу создать бесконечное прокручивание RecyclerView в моем приложении. Он использует веб-службу и отображает некоторые элементы CardView на экране. Вот это упрощенный код, который я до сих пор, не Inculding создание RecyclerView и т.д.Xamarin Android onScrollListener вызывается более одного раза
Main.cs
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
var categoryLayoutManager = new LinearLayoutManager(this);
categoryList.SetLayoutManager(categoryLayoutManager);
var onScrollListener = new OnScrollListener(categoryLayoutManager);
onScrollListener.LoadMoreEvent += (object sender, EventArgs e) =>
{
Console.WriteLine("Last");
};
}
OnScrollListener.cs
public class OnScrollListener : RecyclerView.OnScrollListener
{
public delegate void LoadMoreEventHandler(object sender, EventArgs e);
public event LoadMoreEventHandler LoadMoreEvent;
private LinearLayoutManager LayoutManager;
public OnScrollListener(LinearLayoutManager layoutManager)
{
LayoutManager = layoutManager;
}
public override void OnScrolled(RecyclerView recyclerView, int dx, int dy)
{
base.OnScrolled(recyclerView, dx, dy);
var visibleItemCount = recyclerView.ChildCount;
var totalItemCount = recyclerView.GetAdapter().ItemCount;
var pastVisiblesItems = LayoutManager.FindFirstVisibleItemPosition();
if ((visibleItemCount + pastVisiblesItems) >= totalItemCount)
{
LoadMoreEvent(this, null);
}
}
}
В настоящее время, при прокрутке вниз к последнему элементу мой скроллер вызывается более одного раза, поэтому он приносит больше предметов, чем необходимо. Я хочу, чтобы мой прослушиватель вызывался один раз, извлекал элементы, а затем мог быть вызван снова, когда новый последний элемент виден. Возможно ли это с текущим кодом, который у меня есть? Спасибо.