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

অ্যান্ড্রয়েডে Spinner-এ ভ্যালু অনুযায়ী আইটেম সিলেক্ট করা (পজিশন নায়)

Spinner-এ পজিশন ইনডেক্সের বদলে স্ট্রিং ভ্যালু দিয়ে আইটেম সিলেকশন

সাধারণত spinner.setSelection(position) ব্যবহার করা হয়। কিন্তু যদি আপনার কাছে শুধু ভ্যালু (যেমন "Cristiano Ronaldo") থাকে এবং সেটি লিস্টে কোনো ইনডেক্সে আছে সেটা জানতে চান, তবে লিস্টে সার্চ করে ইনডেক্স বের করে সিলেক্ট করতে হয়।

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

Android Studio-তে File → New Project নির্বাচন করুন।

ধাপ ২: লেআউট (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    android:padding="16dp"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:onClick="SelectSpinnerValue"
        android:text="Select Cristiano Ronaldo" />

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/button"
        android:layout_centerInParent="true"
        android:layout_marginTop="10dp" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp"
        android:text="Set selected item of Spinner by value instead of by position on Android"
        android:textAlignment="center"
        android:textSize="24sp"
        android:textStyle="bold|italic" />

</RelativeLayout>

ধাপ ৩: মেইন এক্টিভিটি (src/MainActivity.java)

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    Spinner spinner;
    String[] FootBallPlayers = new String[]{
            "Lionel Messi", "Eden Hazard", "Cristiano Ronaldo",
            "Neymar Jr", "Gareth Bale", "David Bekham"
    };

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

        spinner = findViewById(R.id.spinner);
        final List<String> plantsList = new ArrayList<>(Arrays.asList(FootBallPlayers));
        final ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<>(this,
                R.layout.support_simple_spinner_dropdown_item, plantsList);
        spinnerArrayAdapter.setDropDownViewResource(R.layout.spinner_value);
        spinner.setAdapter(spinnerArrayAdapter);
    }

    public void SelectSpinnerValue(View view) {
        // সরাসরি পজিশন ২ (Cristiano Ronaldo) সিলেক্ট করলেও হয়
        // কিন্তু ডাইনামিকভাবে ভ্যালু দিয়ে করতে হলে নিচের পদ্ধতি:
        String targetValue = "Cristiano Ronaldo";
        int position = plantsList.indexOf(targetValue);
        if (position >= 0) {
            spinner.setSelection(position);
        }
    }
}

ধাপ ৪: স্পিনার ড্রপডাউন লেআউট (res/layout/spinner_value.xml)

<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:textStyle="italic"
    android:fontFamily="sans-serif-medium" />

ধাপ ৫: মেনিফেস্ট (androidManifest.xml)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

সার्वজনিন ইউটিলিটি মেথড

public static void setSpinnerByValue(Spinner spinner, String value) {
    ArrayAdapter adapter = (ArrayAdapter) spinner.getAdapter();
    if (adapter != null) {
        for (int i = 0; i < adapter.getCount(); i++) {
            if (value.equals(adapter.getItem(i))) {
                spinner.setSelection(i);
                return;
            }
        }
    }
}

ফলাফল

"Select Cristiano Ronaldo" বাটনে ক্লিক করলে Spinner-এ "Cristiano Ronaldo" নির্বাচিত হয়ে যাবে।

অ্যান্ড্রয়েডে Spinner-এ ভ্যালু অনুযায়ী আইটেম সিলেক্ট করা (পজিশন নায়)

  1. অ্যান্ড্রয়েডে Spinner ভ্যালু পাওয়ার পদ্ধতি

  2. How can I dynamically set the position of view in android?

  3. অ্যান্ড্রয়েড RecyclerView-এ সিলেক্টেড আইটেম সঠিকভাবে হাইলাইট করবেন কীভাবে?

  4. অ্যান্ড্রয়েডে VPN সেট আপ করার পূর্ণ নির্দেশিকা