কম্পিউটার টিউটোরিয়াল

Android-এ synchronizedSet কীভাবে ব্যবহার করবেন?

Android-এ Collections.synchronizedSet() ব্যবহার করার টিউটোরিয়াল

এই উদাহরণে দেখানো হয়েছে Android-এ synchronizedSet কীভাবে ব্যবহার করবেন।

স্টেপ ১: নতুন প্রজেক্ট তৈরি করুন

Android Studio-তে File → New Project-এ যান এবং প্রয়োজনীয় ডিটেইল পূরণ করে একটি নতুন প্রজেক্ট তৈরি করুন।

স্টেপ ২: res/layout/activity_main.xml-এ কোড যোগ করুন

<?xml version = "1.0" encoding = "utf-8"?> 
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android" 
    xmlns:tools = "https://schemas.android.com/tools" 
    android:layout_width = "match_parent" 
    android:layout_height = "match_parent" 
    tools:context = ".MainActivity" 
    android:orientation = "vertical"> 
    <EditText 
        android:id = "@+id/name" 
        android:layout_width = "match_parent" 
        android:hint = "নাম লিখুন" 
        android:layout_height = "wrap_content" /> 
    <LinearLayout 
        android:layout_width = "wrap_content" 
        android:layout_height = "wrap_content"> 
        <Button 
            android:id = "@+id/save" 
            android:text = "সংরক্ষণ" 
            android:layout_width = "wrap_content" 
            android:layout_height = "wrap_content" /> 
        <Button 
            android:id = "@+id/refresh" 
            android:text = "রিফ্রেশ" 
            android:layout_width = "wrap_content" 
            android:layout_height = "wrap_content" /> 
    </LinearLayout> 
    <ListView 
        android:id = "@+id/listView" 
        android:layout_width = "match_parent" 
        android:layout_height = "wrap_content"> 
    </ListView> 
</LinearLayout>

উপরের কোডে নামের জন্য একটি EditText নেওয়া হয়েছে। Save বাটনে ক্লিক করলে ডেটা ArrayList-এ সংরক্ষিত হবে। Refresh বাটনে ক্লিক করলে ListView-এ পরিবর্তনগুলো দেখাবে।

স্টেপ ৩: src/MainActivity.java-এ কোড যোগ করুন

package com.example.andy.myapplication; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.Toast; 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.NavigableSet; 
import java.util.Set; 
import java.util.TreeSet; 
import java.util.Vector; 

public class MainActivity extends AppCompatActivity { 
    EditText name; 
    ArrayAdapter arrayAdapter; 
    ArrayList<String> array_list; 
    Set set = new TreeSet(); 
    private ListView listView; 
    
    @Override 
    protected void onCreate(Bundle readdInstanceState) { 
        super.onCreate(readdInstanceState); 
        setContentView(R.layout.activity_main); 
        array_list = new ArrayList<String>(); 
        name = findViewById(R.id.name); 
        listView = findViewById(R.id.listView); 
        
        findViewById(R.id.refresh).setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 
                arrayAdapter.notifyDataSetChanged(); 
                listView.invalidateViews(); 
                listView.refreshDrawableState(); 
            } 
        }); 
        
        findViewById(R.id.save).setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 
                if (!name.getText().toString().isEmpty()) { 
                    set.add(name.getText().toString()); 
                    // synchronizedSet তৈরি করা হয়েছে
                    Set syncSet = Collections.synchronizedSet(set); 
                    array_list.clear(); 
                    array_list.addAll(syncSet); 
                    arrayAdapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, array_list); 
                    listView.setAdapter(arrayAdapter); 
                    Toast.makeText(MainActivity.this, "সংরক্ষিত হয়েছে", Toast.LENGTH_LONG).show(); 
                } else { 
                    name.setError("নাম লিখুন"); 
                } 
            } 
        }); 
    } 
}

synchronizedSet ব্যাখ্যা

Collections.synchronizedSet(Set<E> s) মেথডটি একটি সেটের থ্রেড-সেফ (সিঙ্ক্রোনাইজড) র‍্যাপার রিটার্ন করে। এটি সাধারণ সেটকে মাল্টি-থ্রেডেড এনভায়রনমেন্টে নিরাপদে ব্যবহারযোগ্য করে তোলে। HashSet, TreeSet বা অন্য যেকোনো Set ইমপ্লিমেন্টেশন এর সাথে এটি ব্যবহার করা যায়। সিঙ্ক্রোনাইজড সেটের ওপর ইটারেশন করার সময় ম্যানুয়ালি সিঙ্ক্রোনাইজড ব্লক ব্যবহার করা উচিত।

অ্যাপ্লিকেশন চালান

Android Studio-তে Run আইকনে ক্লিক করে অ্যাপ চালান। ডিভাইস সিলেক্ট করুন।

Android-এ synchronizedSet কীভাবে ব্যবহার করবেন?

উপরের ফলাফলে TreeSet-এর এলিমেন্টগুলো অ্যাডাপ্টারের মাধ্যমে ListView-এ দেখানো হয়েছে।

  1. অ্যান্ড্রয়েডে LocalBroadcastManager ব্যবহারের পদ্ধতি

  2. এন্ড্রয়েডে ViewFlipper ব্যবহার করার পদ্ধতি

  3. অ্যান্ড্রয়েডে Snackbar ব্যবহার করার পদ্ধতি

  4. Android-এ NavigationView ব্যবহার করে নেভিগেশন ড্রয়ার তৈরির পদ্ধতি