مشخصات مقاله
-
1875
-
0.0
-
4589
-
0
-
0
پیاده سازی swipe to refresh
آموزش حاضر به شرح پیاده سازی الگو توسعه ی swipe to refresh در اپلیکیشن می پردازد.
آموزش پیاده سازی قابلیت بروز رسانی آیتم های لیست با استفاده از swipe to refresh
اندروید همچنین یک کامپوننت UI یا widget ارائه می دهد که در واقع الگو توسعه ی swipe-to-refresh را پیاده سازی کرده و به کاربر این امکان را می دهد تا با کشیدن صفحه به پایین (swipe عمودی بر روی نمایشگر) آیتم های لیست را بروز رسانی کند (عملیات update را فراخوانی نماید).
این قابلیت توسط widget ای به نام SwipeRefreshLayout پیاده سازی می شود. این کامپوننت UI در حقیقت عمل کشیدن صفحه به پایین یا swipe عمودی را تشخیص داده، یک progress bar مجزا به نمایش می گذارد و متدهای callback را در اپلیکیشن فراخوانی می کند.
جهت پشتیبانی از widget نام برده، ابتدا می بایست آن را به عنوان میزبان و پدر view مربوطه در فایل layout مورد نظر تعریف نمایید و سپس رفتار یا عملیات بروز رسانی (refresh) که با swipe عمودی کاربر بر روی نمایشگر فعال می شود را پیاده سازی کنید.
به منظور استفاده از swipe to refresh لازم است کتابخانه ی مربوطه (dependency to the support library) را در فایل Gradle build اپلیکیشن خود اضافه کرده باشید.
dependencies {
compile 'com.android.support:support-v4:24.0.0'
}
پس از پیاده سازی الگو توسعه ی swipe-to-refresh، لازم است برای آن دسته از کاربرانی که قابلیت لمس نمایشگر به پایین را ندارند، یک دکمه ی refresh به overflow menu خود داخل toolbar اضافه نمایید.
داخل بدنه ی متد SwipeRefreshLayout.OnRefreshListener، منطق بروز رسانی view را پیاده سازی نمایید.
mySwipeRefreshLayout.setOnRefreshListener(
new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
doYourUpdate();
}
}
);
private void doYourUpdate() {
// TODO implement a refresh
setRefreshing(false); // Disables the refresh icon
}
چنانچه action مزبور (آیتم refresh) را در منوی overflow مستقر در toolbar خود نیز اضافه کردید، در آن صورت لازم است آیکون refresh را نیز در UI به نمایش بگذارید.
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_refresh:
// signal SwipeRefreshLayout to start the progress indicator
mySwipeRefreshLayout.setRefreshing(true);
doYourUpdate();
return true;
}
return super.onOptionsItemSelected(item);
}