এই ডকুমেন্টটি দেখায় কিভাবে আপনার অ্যাপ আপডেট করতে হয় যখন ব্যবহারকারী একটি ম্যানুয়াল রিফ্রেশের অনুরোধ করেন, তারা এটিকে একটি সোয়াইপ অঙ্গভঙ্গি দিয়ে ট্রিগার করে বা অ্যাকশন বার রিফ্রেশ অ্যাকশন ব্যবহার করে।
রিফ্রেশ অঙ্গভঙ্গি সাড়া
ব্যবহারকারী যখন সোয়াইপ-টু-রিফ্রেশ অঙ্গভঙ্গি করে, তখন সিস্টেম অগ্রগতি নির্দেশক প্রদর্শন করে এবং আপনার অ্যাপের কলব্যাক পদ্ধতিতে কল করে। অ্যাপের ডেটা আপডেট করার জন্য আপনার কলব্যাক পদ্ধতি দায়ী।
আপনার অ্যাপে রিফ্রেশ অঙ্গভঙ্গিতে প্রতিক্রিয়া জানাতে, SwipeRefreshLayout.OnRefreshListener
ইন্টারফেস এবং এর onRefresh()
পদ্ধতি প্রয়োগ করুন। ব্যবহারকারী যখন একটি সোয়াইপ অঙ্গভঙ্গি করে তখন onRefresh()
পদ্ধতিটি চালু করা হয়।
প্রকৃত আপডেট অপারেশনের জন্য কোডটি একটি পৃথক পদ্ধতিতে রাখুন, বিশেষত একটি ViewModel
এ, এবং আপনার onRefresh()
বাস্তবায়ন থেকে সেই আপডেট পদ্ধতিটিকে কল করুন। এইভাবে, ব্যবহারকারী যখন অ্যাকশন বার থেকে একটি রিফ্রেশ ট্রিগার করে তখন আপনি আপডেটটি সম্পাদন করতে একই আপডেট পদ্ধতি ব্যবহার করতে পারেন।
আপনার আপডেট পদ্ধতিতে, ডেটা আপডেট করা শেষ হলে setRefreshing(false)
কল করুন। এই পদ্ধতিতে কল করলে SwipeRefreshLayout
অগ্রগতি নির্দেশক অপসারণ এবং দেখার বিষয়বস্তু আপডেট করার নির্দেশ দেওয়া হয়।
উদাহরণস্বরূপ, নিম্নলিখিত কোডটি onRefresh()
প্রয়োগ করে এবং একটি ListView
দ্বারা প্রদর্শিত ডেটা আপডেট করার জন্য myUpdateOperation()
পদ্ধতি চালু করে:
কোটলিন
// Sets up a SwipeRefreshLayout.OnRefreshListener that invokes when // the user performs a swipe-to-refresh gesture. mySwipeRefreshLayout.setOnRefreshListener { Log.i(LOG_TAG, "onRefresh called from SwipeRefreshLayout") // This method performs the actual data-refresh operation and calls // setRefreshing(false) when it finishes. myUpdateOperation() }
জাভা
// Sets up a SwipeRefreshLayout.OnRefreshListener that is invoked when // the user performs a swipe-to-refresh gesture. mySwipeRefreshLayout.setOnRefreshListener(() -> { Log.i(LOG_TAG, "onRefresh called from SwipeRefreshLayout"); // This method performs the actual data-refresh operation and calls // setRefreshing(false) when it finishes. myUpdateOperation(); } );
রিফ্রেশ অ্যাকশনে সাড়া দিন
যদি ব্যবহারকারী অ্যাকশন বার ব্যবহার করে একটি রিফ্রেশের অনুরোধ করে, সিস্টেমটি onOptionsItemSelected()
পদ্ধতিতে কল করে। আপনার অ্যাপ অগ্রগতি নির্দেশক প্রদর্শন করে এবং অ্যাপের ডেটা রিফ্রেশ করে এই কলে সাড়া দেয়।
রিফ্রেশ অ্যাকশনের প্রতিক্রিয়া জানাতে, onOptionsItemSelected()
উপর ওভাররাইড করুন। আপনার ওভাররাইড পদ্ধতিতে, মান true
সহ setRefreshing()
কল করে SwipeRefreshLayout
অগ্রগতি নির্দেশক ট্রিগার করুন, তারপর আপডেট অপারেশন করুন। একটি পৃথক পদ্ধতিতে প্রকৃত আপডেট সম্পাদন করুন, যাতে ব্যবহারকারী একটি সোয়াইপ দিয়ে আপডেটটি ট্রিগার করেন বা অ্যাকশন বার ব্যবহার করেন কিনা সেই পদ্ধতিটি বলা যেতে পারে। আপডেট শেষ হলে, রিফ্রেশ অগ্রগতি সূচকটি সরাতে setRefreshing(false)
কল করুন।
নিম্নলিখিত কোডটি দেখায় কিভাবে অনুরোধ কর্মের প্রতিক্রিয়া জানাতে হয়:
কোটলিন
// Listen for option item selections to receive a notification when the user // requests a refresh by selecting the refresh action bar item. override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { // Check whether the user triggers a refresh: R.id.menu_refresh -> { Log.i(LOG_TAG, "Refresh menu item selected") // Signal SwipeRefreshLayout to start the progress indicator. mySwipeRefreshLayout.isRefreshing = true // Start the refresh background task. This method calls // setRefreshing(false) when it finishes. myUpdateOperation() return true } } // User doesn't trigger a refresh. Let the superclass handle this action. return super.onOptionsItemSelected(item) }
জাভা
// Listen for option item selections to receive a notification when the user // requests a refresh by selecting the refresh action bar item. @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // Check whether the user triggers a refresh: case R.id.menu_refresh: Log.i(LOG_TAG, "Refresh menu item selected"); // Signal SwipeRefreshLayout to start the progress indicator. mySwipeRefreshLayout.setRefreshing(true); // Start the refresh background task. This method calls // setRefreshing(false) when it finishes. myUpdateOperation(); return true; } // User doesn't trigger a refresh. Let the superclass handle this action. return super.onOptionsItemSelected(item); }