2
我想在我的應用程序中創建一個無限的滾動RecyclerView。它使用Web服務並在屏幕上顯示一些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);
}
}
}
目前,向下滾動時到最後一個項目,我的滾動器不止一次地被調用,所以它帶來了比需要更多的項目。 我希望我的偵聽器被調用一次,獲取項目,然後能夠在新的最後一個項目可見時再次調用。現在的代碼有可用嗎?謝謝。