Sponsored

অ্যান্ড্রয়েড অ্যাপে পুল টু রিফ্রেশ যুক্ত করা

0
2

আমরা যখন ইন্টারনেট নির্ভর কোন অ্যাপ তৈরি করব, তখন আমাদের মাঝে মাঝে ডেটা আপডেট করার দরকার হতে পারে। আর সাধারণত আমরা প্রায় সব গুলো অ্যাপেই দেখি পুল টু রিফ্রেশ অপশনটা যুক্ত থাকে। এটাকে Swipe to Refresh ও বলা হয়। Swipe to Refresh যুক্ত করার জন্য আমাদের সাপোর্ট লাইব্রেরির দরকার হবে। গ্রেডেল ডিফেন্ডেন্সিতে সাপোর্ট লাইব্রেরি যুক্ত করে নিবঃ

compile 'com.android.support:support-v4:25.3.1'

এই অ্যাপে আমরা লিস্ট ভিউতে পুল টু রিফ্রেশ যুক্ত করব। অ্যান্ড্রয়েড লিস্ট ভিউ – Android ListView লেখাটিতে আমরা দেখেছি কিভাবে লিস্ট ভিউ নিয়ে কাজ করা যায়। আমরা ঐ প্রজেক্টেই পুল টু অপশন যুক্ত করব। আমাদের অ্যাপ দেখতে এমন হবেঃ

সোয়াইপ টু রিফ্রেশ যুক্ত করার জন্য আমাদের লিস্ট ভিউ android.support.v4.widget.SwipeRefreshLayout উইজেটের মধ্যে রাখতে হবে। activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="me.jakir.swipetorefreshinlistview.MainActivity">

    <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipe_refresh_layout" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent">

        <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" />
    </android.support.v4.widget.SwipeRefreshLayout>
</android.support.constraint.ConstraintLayout>

লিস্টভিউ এর লিস্ট আইটেমের জন্য list_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent">
</TextView>

এতটুকু করলেই সোয়াইপ করতে পারব আমরা। সোয়াইপ করছে কিনা, তা চেক করার জন্য আমাদের setOnRefreshListener যুক্ত করতে হবে। তা যুক্ত করতে পারি এভাবেঃ

  mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout);
        mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                refreshContent();
            }
        });

refreshContent মেথডে হয়তো আমরা নেটওয়ার্ক কল করব। নেটওয়ার্ক কল করে যে ডেটা গুলো পাবো, যে গুলো লিস্টে যুক্ত করব। এই উদাহরণে আমরা নেটওয়ার্ক কল না করে এমনিতে একটা ডামি ডেটা যুক্ত করেছি লিস্ট ভিউতেঃ

  private void refreshContent() {

        mSwipeRefreshLayout.setRefreshing(false);
        rainbowColors.add("Another color");
        mAdapter.notifyDataSetChanged();

    }

সম্পূর্ণ MainActivity.java:

import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    SwipeRefreshLayout mSwipeRefreshLayout;
    ArrayAdapter<String> mAdapter;
    ListView mListView;
    ArrayList<String> rainbowColors = new ArrayList<String>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        populateListView();

        // add click listener on list item
        registerClickCallBack();
    }


    private void populateListView() {



        // crate list of list_items
        rainbowColors.add("Red");
        rainbowColors.add("Orange");
        rainbowColors.add("Yellow");

        // build adapter
        mAdapter = new ArrayAdapter<String>(this, R.layout.list_item, rainbowColors);

        // configure list view
        mListView = (ListView) findViewById(R.id.list_view);

        mListView.setAdapter(mAdapter);


        mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout);
        mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                refreshContent();
            }
        });

    }


    private void registerClickCallBack() {
        ListView list = (ListView) findViewById(R.id.list_view);

        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                TextView textView = (TextView) view;
                String message = "You clicked # " + position + ", which is : "
                        + textView.getText().toString();
                Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
            }
        });

    }

    private void refreshContent() {

        mSwipeRefreshLayout.setRefreshing(false);
        rainbowColors.add("Another color");
        mAdapter.notifyDataSetChanged();

    }
}

অ্যাপটি রান করে পুল টু রিফ্রেশ করলে লিস্ট ভিউতে নতুন একটা আইটেম যুক্ত হবে। এবার নিজের মত করে মডিফাই করে যে কোন কিছুই আপনি করতে পারেন।

সোর্সকোড পাওয়া যাবে গিটহাবে। এন্ড্রয়েড নিয়ে অন্যান্য লেখা গুলো পাওয়া যাবে অ্যাপ ডেভ পেইজে।

Search
Categories
Read More
Tech
Fairphone 5 ফেয়ারফোন ৫ নিয়ে এলো সাশ্রীয় 6/128 GB ভেরিয়েন্ট | Techtunes | টেকটিউনস
“THE BLACK-WEB” : মায়াজালে ঘেরা ইন্টারনেটের রহস্যময় অন্ধকার জগৎ EK
By Nettumi 2026-09-25 03:56:57 0 14
Nulled
MoonLight v1.0 - The Ultimate WoWonder Theme Free (New)
MoonLight v1.0 – The Ultimate WoWonder Theme Free Download. MoonLight is a WoWonder...
By Nettumi 2026-09-18 03:29:48 0 54
Tech
iOS এর জন্য ফটো ফিল্টার অ্যাপ তৈরি
অ্যাপল প্লাটফর্মে ইমেজ নিয়ে কাজ করার জন্য রয়েছে কোর ইমেজ ফ্রেমওয়ার্ক। যেখানে বিল্টইন ২০০+ ফিল্টার...
By Nettumi 2026-09-30 18:39:48 0 1
Tech
3D টিভি কিনতে চাচ্ছেন? তাহলে এই টিউনটি আপনার জন্য! | Techtunes | টেকটিউনস
মোবাইলের মাধ্যমে চ্যাট করার কিছু দারুণ সফটওয়্যার মো. আমিনুল ইসলাম সজীব
By Nettumi 2026-09-26 11:51:26 0 650
Tech
সিএসএস - ব্লক ইলিম্যান্ট / div এর এলাইনম্যান্ট।
আমরা সাধারনত যে কোন টেক্সটকে ডানে, বামে, বা মাজখানে এলাইন করতে পারি সহজে। text-align প্রপার্টি এর...
By Nettumi 2026-09-30 18:44:02 0 1
‎ ‎ ‎
Nettumi https://nettumi.com