একটি রিফ্রেশ অনুরোধ সাড়া

কম্পোজ পদ্ধতিটি চেষ্টা করুন
অ্যান্ড্রয়েডের জন্য Jetpack Compose হলো প্রস্তাবিত UI টুলকিট। Compose-এ কীভাবে পুল করে রিফ্রেশ করতে হয় তা শিখুন।

এই ডকুমেন্টটিতে দেখানো হয়েছে, ব্যবহারকারী যখন ম্যানুয়াল রিফ্রেশের অনুরোধ করেন, তখন আপনার অ্যাপটি কীভাবে আপডেট করতে হয়; এই অনুরোধটি সোয়াইপ জেসচারের মাধ্যমে হোক বা অ্যাকশন বারের রিফ্রেশ অ্যাকশন ব্যবহার করেই হোক।

রিফ্রেশ অঙ্গভঙ্গিতে সাড়া দিন।

যখন ব্যবহারকারী সোয়াইপ-টু-রিফ্রেশ জেসচারটি ব্যবহার করেন, তখন সিস্টেম প্রোগ্রেস ইন্ডিকেটরটি প্রদর্শন করে এবং আপনার অ্যাপের কলব্যাক মেথডটি কল করে। আপনার কলব্যাক মেথডটি অ্যাপের ডেটা আপডেট করার দায়িত্বে থাকে।

আপনার অ্যাপে রিফ্রেশ জেসচারে সাড়া দেওয়ার জন্য, 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);
}