অ্যান্ড্রয়েড সতর্কতা ডায়ালগে আমি কীভাবে একটি তালিকা ভিউ প্রদর্শন করতে পারি?


291

একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে, আমি একটি সতর্কতা ডায়ালগটিতে একটি কাস্টম তালিকা প্রদর্শন করতে চাই।

কিভাবে আমি এটি করতে পারব?


কেবল স্ট্রিংয়ের তালিকা নিন, তারপরে CharSequence এর ক্রম তৈরি করুন [], তারপরে আইটেমগুলি দেখানোর জন্য AlertDialog.Builder ব্যবহার করুন। এখানে স্ন্যাপশট সঙ্গে সহজ উদাহরণ feelzdroid.com/2014/12/...
ছেলে

উত্তর:


498

সতর্কতা ডায়ালগটিতে কাস্টম তালিকা প্রদর্শন করতে কোডের নীচে ব্যবহার করা হয়

AlertDialog.Builder builderSingle = new AlertDialog.Builder(DialogActivity.this);
builderSingle.setIcon(R.drawable.ic_launcher);
builderSingle.setTitle("Select One Name:-");

final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(DialogActivity.this, android.R.layout.select_dialog_singlechoice);
arrayAdapter.add("Hardik");
arrayAdapter.add("Archit");
arrayAdapter.add("Jignesh");
arrayAdapter.add("Umang");
arrayAdapter.add("Gatti");

builderSingle.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });

builderSingle.setAdapter(arrayAdapter, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                String strName = arrayAdapter.getItem(which);
                AlertDialog.Builder builderInner = new AlertDialog.Builder(DialogActivity.this);
                builderInner.setMessage(strName);
                builderInner.setTitle("Your Selected Item is");
                builderInner.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,int which) {
                                dialog.dismiss();
                            }
                        });
                builderInner.show();
            }
        });
builderSingle.show();

এই আইটেমগুলিতে দীর্ঘ ক্লিকগুলি সনাক্ত করার কোনও সম্ভাবনা আছে? আমি একটি পপআপ মেনু সমাধানের জন্য ঘন্টার জন্য খুঁজছি যা সমস্ত এপিআই স্তরে কাজ করে
wutzebaer

7
@ শেভেট অনুমিতভাবে, প্রদর্শন () দেখায় ডায়ালগটি তৈরি করে এবং দেখায়, যখন তৈরি () কেবল এটি তৈরি করে।
htafoya

আমি কীভাবে এই সেট আপটি ব্যবহার করতে পারি তবে আমার তালিকাটি হার্ডকডিংয়ের পরিবর্তে, ইতিমধ্যে ব্যবহারকারীর কাছে থাকা পার্স থেকে আমার কিছু তথ্য নেওয়া দরকার।?
স্ট্যানলে সান্টোসো

@ এস্তলিইস্যান্টোসো আপনার নিজস্ব অ্যাডাপ্টার তৈরি করুন, এটি ডেটা পূরণ করুন এবং তারপরে এটিকে অ্যালার্টালিয়ালগের জন্য অ্যাডাপ্টার হিসাবে সেট করুন: ডায়ালগবিল্ডার.সেটএডাপ্টার (মাই কাস্টম অ্যাডাপ্টার); এটি কাজ করা উচিত
ক্যান্টটিনকফ অফ অ্যানিথিং

1
নির্বাচন_ডায়ালগ_সিংল_চয়েজ লেআউটটি কী?
ফোর্সফিল্ডফোর্ডের দরজা

254

ডকুমেন্টেশন অনুসারে , এখানে তিন ধরণের তালিকা রয়েছে যা এর সাথে ব্যবহার করা যেতে পারে AlertDialog:

  1. Ditionতিহ্যগত একক-পছন্দ তালিকা
  2. অবিচ্ছিন্ন একক-পছন্দ তালিকা (রেডিও বোতাম)
  3. একটানা একাধিক পছন্দের তালিকা (চেকবক্স)

আমি নীচের প্রতিটি উদাহরণ দেব।

Ditionতিহ্যগত একক-পছন্দ তালিকা

Aতিহ্যবাহী একক-পছন্দ তালিকা তৈরির উপায়টি ব্যবহার করা setItems

এখানে চিত্র বর্ণনা লিখুন

জাভা সংস্করণ

// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Choose an animal");

// add a list
String[] animals = {"horse", "cow", "camel", "sheep", "goat"};
builder.setItems(animals, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        switch (which) {
            case 0: // horse
            case 1: // cow
            case 2: // camel
            case 3: // sheep
            case 4: // goat
        }
    }
});

// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();

ওকে বোতামের দরকার নেই কারণ ব্যবহারকারী তালিকার আইটেম নিয়ন্ত্রণে ক্লিক করার সাথে সাথেই ফিরে আসে OnClickListener

কোটলিন সংস্করণ

// setup the alert builder
val builder = AlertDialog.Builder(context)
builder.setTitle("Choose an animal")

// add a list
val animals = arrayOf("horse", "cow", "camel", "sheep", "goat")
builder.setItems(animals) { dialog, which ->
    when (which) {
        0 -> { /* horse */ }
        1 -> { /* cow   */ }
        2 -> { /* camel */ }
        3 -> { /* sheep */ }
        4 -> { /* goat  */ }
    }
}

// create and show the alert dialog
val dialog = builder.create()
dialog.show()

রেডিও বোতামের তালিকা

এখানে চিত্র বর্ণনা লিখুন

Traditionalতিহ্যবাহী তালিকার উপরে রেডিও বোতাম তালিকার সুবিধাটি হ'ল ব্যবহারকারী বর্তমান সেটিংসটি কী তা দেখতে পারে। একটি রেডিও বোতাম তালিকা তৈরির উপায়টি ব্যবহার করা setSingleChoiceItems

জাভা সংস্করণ

// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Choose an animal");

// add a radio button list
String[] animals = {"horse", "cow", "camel", "sheep", "goat"};
int checkedItem = 1; // cow
builder.setSingleChoiceItems(animals, checkedItem, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // user checked an item
    }
});

// add OK and Cancel buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // user clicked OK
    }
});
builder.setNegativeButton("Cancel", null);

// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();

আমি এখানে নির্বাচিত আইটেমটি কঠোরভাবে কোড করেছি, তবে আপনি কোনও বাস্তব প্রকল্পে কোনও শ্রেণীর সদস্যের ভেরিয়েবলের সাথে এটি ট্র্যাক রাখতে পারেন।

কোটলিন সংস্করণ

// setup the alert builder
val builder = AlertDialog.Builder(context)
builder.setTitle("Choose an animal")

// add a radio button list
val animals = arrayOf("horse", "cow", "camel", "sheep", "goat")
val checkedItem = 1 // cow
builder.setSingleChoiceItems(animals, checkedItem) { dialog, which ->
    // user checked an item
}


// add OK and Cancel buttons
builder.setPositiveButton("OK") { dialog, which ->
    // user clicked OK
}
builder.setNegativeButton("Cancel", null)

// create and show the alert dialog
val dialog = builder.create()
dialog.show()

চেকবক্সের তালিকা

এখানে চিত্র বর্ণনা লিখুন

চেকবক্সের তালিকা তৈরির উপায়টি ব্যবহার করা setMultiChoiceItems

জাভা সংস্করণ

// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Choose some animals");

// add a checkbox list
String[] animals = {"horse", "cow", "camel", "sheep", "goat"};
boolean[] checkedItems = {true, false, false, true, false};
builder.setMultiChoiceItems(animals, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
        // user checked or unchecked a box
    }
});

// add OK and Cancel buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // user clicked OK
    }
});
builder.setNegativeButton("Cancel", null);

// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();

এখানে আমি তালিকায় থাকা কোন আইটেমগুলি ইতিমধ্যে চেক করা হয়েছিল তা হার্ডভাবে কোড করেছিলাম। এটি সম্ভবত আপনি তাদের ট্র্যাক রাখতে চাইবেন সম্ভবত ArrayList<Integer>। দেখুন ডকুমেন্টেশন উদাহরণ আরো বিস্তারিত জানার জন্য। আপনি nullযদি সর্বদা সমস্ত কিছু চেক না করা শুরু করতে চান তবে আপনি চেক করা আইটেমগুলিতেও সেট করতে পারেন।

কোটলিন সংস্করণ

// setup the alert builder
val builder = AlertDialog.Builder(context)
builder.setTitle("Choose some animals")

// add a checkbox list
val animals = arrayOf("horse", "cow", "camel", "sheep", "goat")
val checkedItems = booleanArrayOf(true, false, false, true, false)
builder.setMultiChoiceItems(animals, checkedItems) { dialog, which, isChecked ->
    // user checked or unchecked a box
}

// add OK and Cancel buttons
builder.setPositiveButton("OK") { dialog, which ->
    // user clicked OK
}
builder.setNegativeButton("Cancel", null)

// create and show the alert dialog
val dialog = builder.create()
dialog.show()

মন্তব্য

  • জন্য contextউপরের কোড এ, ব্যবহার করবেন না getApplicationContext()অথবা আপনি একটি পাবেন IllegalStateException(দেখুন এখানে কেন)। পরিবর্তে, ক্রিয়াকলাপ প্রসঙ্গে যেমন একটি রেফারেন্স পান this
  • এছাড়াও আপনি ব্যবহার করে একটি ডাটাবেসের বা অন্য উৎস থেকে তালিকার আইটেম পূরণ করতে setAdapterবা setCursorবা কথা প্রসঙ্গে Cursorবা ListAdapterমধ্যে setSingleChoiceItemsঅথবা setMultiChoiceItems
  • তালিকাটি যদি স্ক্রিনে ফিট হয় তার চেয়ে বেশি হয় তবে ডায়ালগটি স্বয়ংক্রিয়ভাবে এটিকে স্ক্রোল করবে। আপনার যদি সত্যিই দীর্ঘ তালিকা থাকে তবে আমি অনুমান করছি যে আপনার সম্ভবত একটি পুনর্ব্যবহারযোগ্য ভিউয়ের সাথে একটি কাস্টম সংলাপ করা উচিত ।
  • উপরের সমস্ত উদাহরণ পরীক্ষা করার জন্য আমার ক্লিক করার সময় ডায়ালগটি দেখানোর চেয়ে একটি মাত্র বাটন সহ একটি সহজ প্রকল্প ছিল:

    import android.support.v7.app.AppCompatActivity;
    
    public class MainActivity extends AppCompatActivity {
    
        Context context;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            context = this;
        }
    
        public void showAlertDialogButtonClicked(View view) {
    
            // example code to create alert dialog lists goes here
        }
    }

সম্পর্কিত


2
এটি দুর্দান্ত, এখন আইকনগুলি যুক্ত করুন;)
এএএ

1
@ এএএ, আমি মনে করি আপনাকে একটি কাস্টম লেআউট সতর্কতা ডায়ালগ তৈরি করতে হবে যা এর জন্য বিন্যাসে একটি RecyclerViewব্যবহার করে।
সুরগাচ

অনক্লিক পদ্ধতিতে ডায়লগে থাকা 'কোনটি' কী বোঝায়?
20:37 এ 12

ডকুমেন্টেশন অনুসারে @ গনফিশিং, এটি "বোতামটি ক্লিক করা হয়েছিল (প্রাক্তন BUTTON_POSITIVE) বা ক্লিক করা আইটেমের অবস্থান"।
সুরগাচ

1
আপনি যদি কাস্টম অ্যাডাপ্টারের সাহায্যে একটি সাধারণ তালিকা (1) প্রয়োগ করতে চান তবে ব্যবহার করুন Builder.setAdapter(ListAdapter, DialogInterface.OnClickListener): whichশ্রোতার onClickক্ষেত্রে ক্লিক করা আইটেমের অবস্থানের সমান হবে। Builder.setOnItemSelectedListenerকোন প্রভাব আছে।
মিহা_এক্স 64

122

আপনি একটি কাস্টম ডায়ালগ ব্যবহার করতে পারেন।

কাস্টম সংলাপ বিন্যাস। list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <ListView
        android:id="@+id/lv"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"/>
</LinearLayout>

আপনার ক্রিয়াকলাপে

Dialog dialog = new Dialog(Activity.this);
       dialog.setContentView(R.layout.list)

ListView lv = (ListView ) dialog.findViewById(R.id.lv);
dialog.setCancelable(true);
dialog.setTitle("ListView");
dialog.show();

সম্পাদনা:

অ্যালার্টডায়ালগ ব্যবহার করা হচ্ছে

String names[] ={"A","B","C","D"};
AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
LayoutInflater inflater = getLayoutInflater();
View convertView = (View) inflater.inflate(R.layout.custom, null);
alertDialog.setView(convertView);
alertDialog.setTitle("List");
ListView lv = (ListView) convertView.findViewById(R.id.lv);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,names);
lv.setAdapter(adapter);
alertDialog.show();

custom.xml

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/listView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

</ListView>

ক্ষুদ্র তালা

এখানে চিত্র বর্ণনা লিখুন


1
@ জুয়ান - ডেভটোপিয়া.কোপ আপনি কেবল ডাউনটিতে উন্নীত করার পরে আমার পোস্টটি সম্পাদনা করেছেন। কি ভুল তা আপনি মন্তব্য করতে পারেন
রঘুনন্দন

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

@ রঘুনন্দন, আমি আপনার কোড ব্যবহার করেছি তবে আমি lv.setAdapter (অ্যাডাপ্টার) এ ব্যতিক্রম পেয়েছি; লাইন, আপনি আমাকে সাহায্য করতে পারেন?
আহমদ বতানী

@ আহমাদ কী অবসন্ন?
রঘুনন্দন

1
@ নীলগালিয়াসকারভ হ্যাঁ এটি স্ক্রোলযোগ্য। Listview স্ক্রল হবে
রঘুনন্দন

44
final CharSequence[] items = {"A", "B", "C"};

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Make your selection");
builder.setItems(items, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int item) {
        // Do something with the selection
        mDoneButton.setText(items[item]);
    }
});
AlertDialog alert = builder.create();
alert.show();


2
@ আরহাতবায়েদ কিন্তু সেটটাইমস কাজ করছে না যখন আমি সেটমেসেজে কোনও বার্তা রাখি। আমি গুগলে অনুসন্ধান করেছি কিন্তু আমি যে উত্তরটি পেয়েছি তা হ'ল বার্তাটি সেটটিটলে সেট করা। তবে সমস্যাটি সেটটাইটল কেবলমাত্র কয়েকটি সংখ্যক চরিত্রের অনুমতি দেয়। সতর্কতা সংলাপে সেটম্যাসেজ এবং সেটআইটেমগুলি ব্যবহার করার কোনও উপায় আছে কি?
ডেভিড

@ ডেভিড এর জন্য আপনাকে কাস্টম সংলাপে যেতে হবে।
আরহাত বাইদ

1
এই সমাধানটি খুব দুর্দান্ত কারণ আপনি এটির সাথেও যেতে পারেন (উপরের কলের ListAdapterসাথে setSingleChoiceItemsখুব মিল)
স্নোট্যাক

প্রত্যাশিত হিসাবে নিখুঁত ... ন্যূনতম কোড সহ শত শত আইটেম পরিচালনা করে। :)
jeet.chanchawat

10

" import android.app.AlertDialog;" আমদানি ব্যবহার করুন এবং তারপরে আপনি লিখুন

    String[] items = {"...","...."};             
    AlertDialog.Builder build = new AlertDialog.Builder(context);
    build.setItems(items, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //do stuff....
        }
    }).create().show();

আপনার তখন বিসি দরকার আপনার তৈরি করা সতর্কতা ডায়ালগটি তৈরি করার পরে। নির্মাতা না। (গ) ফেসবাম
ফেসবাম

পছন্দ করেছেন show()উভয় না। Calling this method is functionally identical to: AlertDialog dialog = builder.create(); dialog.show();এটি সরাসরি show()পদ্ধতির ডকুমেন্টেশন থেকে
ᴛʜᴇᴘᴀᴛᴇʟ

এটি ঠিক তবে মাঝে মাঝে আমি কিছু ব্যবহারকারীর ইন্টারফেস ত্রুটি পেয়েছি। (গ) ফেসবাম
ফেসবাম

না এটা সত্য না. () প্রদর্শন () তৈরি করতে অভিন্ন is / ** * এই * নির্মাতাকে সরবরাহ করা যুক্তিগুলির সাথে একটি {@ লিঙ্ক অ্যালার্টডায়ালগ Cre তৈরি করে এবং তত্ক্ষণাত ডায়ালগটি প্রদর্শন করে। * <p> * এই পদ্ধতিটি কল করা কার্যত একইরকম: * <pre> * সতর্কতা ডায়ালগ ডায়ালগ = builder.create (); * কথোপকথন.শো (); * </ translation> * / সর্বজনীন সতর্কতা ডায়ালগ শো () {চূড়ান্ত সতর্কতা ডায়ালগ ডায়ালগ = তৈরি করুন (); dialog.show (); প্রত্যাবর্তন সংলাপ; }
ইমানুয়েল এস

ঠিক আছে, আমি কিছুক্ষণ পরীক্ষা করেছি এবং আমি শ্রীকে বলেছি, সত্য। (গ) ফেসবাম
ফেসবাম

4

এটি খুব সহজ

final CharSequence[] items = {"Take Photo", "Choose from Library", "Cancel"};

AlertDialog.Builder builder = new AlertDialog.Builder(MyProfile.this);

builder.setTitle("Add Photo!");
builder.setItems(items, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int item) {
        if (items[item].equals("Take Photo")) {
            getCapturesProfilePicFromCamera();
        } else if (items[item].equals("Choose from Library")) {
            getProfilePicFromGallery();
        } else if (items[item].equals("Cancel")) {
            dialog.dismiss();
        }
    }
});
builder.show();

3

শিক্ষানবিস হিসাবে আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি http://www.mkyong.com/android/android-custom-dialog-example/ এর মাধ্যমে যান

এটি মূলত যা করে আমি তা ভাঙা করব

  1. কথোপকথন এবং মূল ক্রিয়াকলাপের জন্য একটি এক্সএমএল ফাইল তৈরি করে
  2. প্রয়োজনীয় জায়গায় মূল ক্রিয়াকলাপে অ্যান্ড্রয়েড বর্গের একটি বস্তু তৈরি করে Dialog
  3. এক্সএমএল ফাইলের উপর ভিত্তি করে কাস্টম স্টাইলিং এবং পাঠ্য যুক্ত করে
  4. dialog.show()পদ্ধতি কল ।

1

কোটলিনে:

fun showListDialog(context: Context){
    // setup alert builder
    val builder = AlertDialog.Builder(context)
    builder.setTitle("Choose an Item")

    // add list items
    val listItems = arrayOf("Item 0","Item 1","Item 2")
    builder.setItems(listItems) { dialog, which ->
        when (which) {
            0 ->{
                Toast.makeText(context,"You Clicked Item 0",Toast.LENGTH_LONG).show()
                dialog.dismiss()
            }
            1->{
                Toast.makeText(context,"You Clicked Item 1",Toast.LENGTH_LONG).show()
                dialog.dismiss()
            }
            2->{
                Toast.makeText(context,"You Clicked Item 2",Toast.LENGTH_LONG).show()
                dialog.dismiss()
            }
        }
    }

    // create & show alert dialog
    val dialog = builder.create()
    dialog.show()
}

1
আপনার উত্তরে কিছু বর্ণনা যুক্ত করুন।
ম্যাথিউজ সানি

1
কি ধরণের বর্ণনা?
বর্ষা প্রভাকর 4'18

1

কাস্টম তালিকা আইটেমটি দিয়ে কাস্টম লেআউট ডায়ালগটি এভাবে দেখাতে হবে, আপনার প্রয়োজন অনুসারে কাস্টমাইজ করা যায়।

এখানে চিত্র বর্ণনা লিখুন

পদক্ষেপ - 1 ডায়ালগবক্সের লেআউট তৈরি করুন যেমন: -

R.layout.assignment_dialog_list_view

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/rectangle_round_corner_assignment_alert"
    android:orientation="vertical">
    <TextView
        android:id="@+id/tv_popup_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:singleLine="true"
        android:paddingStart="4dp"
        android:text="View as:"
        android:textColor="#4f4f4f" />

    <ListView
        android:id="@+id/lv_assignment_users"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />
</LinearLayout>

পদক্ষেপ - 2 আপনার ব্যবসায়ের যুক্তি অনুসারে কাস্টম তালিকা আইটেমের বিন্যাস তৈরি করুন

R.layout.item_assignment_dialog_list_layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:padding="4dp"
    android:orientation="horizontal">
    <ImageView
        android:id="@+id/iv_user_profile_image"
        android:visibility="visible"
        android:layout_width="42dp"
        android:layout_height="42dp" />
    <TextView
        android:id="@+id/tv_user_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="8dp"
        android:layout_marginStart="8dp"
        android:paddingBottom="8dp"
        android:textColor="#666666"
        android:textSize="18sp"
        tools:text="ABCD XYZ" />
</LinearLayout>

পদক্ষেপ - 3 আপনার নিজের পছন্দ মতো একটি ডেটা মডেল ক্লাস তৈরি করুন

public class AssignmentUserModel {

private String userId;
private String userName;
private String userRole;
private Bitmap userProfileBitmap;

public AssignmentUserModel(String userId, String userName, String userRole, Bitmap userProfileBitmap) {
    this.userId = userId;
    this.userName = userName;
    this.userRole = userRole;
    this.userProfileBitmap = userProfileBitmap;
}


public String getUserId() {
    return userId;
}

public void setUserId(String userId) {
    this.userId = userId;
}

public String getUserName() {
    return userName;
}

public void setUserName(String userName) {
    this.userName = userName;
}

public String getUserRole() {
    return userRole;
}

public void setUserRole(String userRole) {
    this.userRole = userRole;
}

public Bitmap getUserProfileBitmap() {
    return userProfileBitmap;
}

public void setUserProfileBitmap(Bitmap userProfileBitmap) {
    this.userProfileBitmap = userProfileBitmap;
}

}

পদক্ষেপ - 4 কাস্টম অ্যাডাপ্টার তৈরি করুন

public class UserListAdapter extends ArrayAdapter<AssignmentUserModel> {
private final Context context;
private final List<AssignmentUserModel> userList;

public UserListAdapter(@NonNull Context context, int resource, @NonNull List<AssignmentUserModel> objects) {
    super(context, resource, objects);
    userList = objects;
    this.context = context;
 }

@SuppressLint("ViewHolder")
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View rowView = inflater.inflate(R.layout.item_assignment_dialog_list_layout, parent, false);
    ImageView profilePic = rowView.findViewById(R.id.iv_user_profile_image);
    TextView userName = rowView.findViewById(R.id.tv_user_name);
    AssignmentUserModel user = userList.get(position);

    userName.setText(user.getUserName());

    Bitmap bitmap = user.getUserProfileBitmap();

    profilePic.setImageDrawable(bitmap);

    return rowView;
}

}

পদক্ষেপ - 5 এই ফাংশনটি তৈরি করুন এবং এই পদ্ধতিতে উপরের ডেটা মডেলের অ্যারেলিস্ট সরবরাহ করুন

// Pass list of your model as arraylist
private void showCustomAlertDialogBoxForUserList(ArrayList<AssignmentUserModel> allUsersList) {
        final Dialog dialog = new Dialog(mActivity);
        dialog.setContentView(R.layout.assignment_dialog_list_view);
        if (dialog.getWindow() != null) {
            dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); // this is optional
        }
        ListView listView = dialog.findViewById(R.id.lv_assignment_users);
        TextView tv = dialog.findViewById(R.id.tv_popup_title);
        ArrayAdapter arrayAdapter = new UserListAdapter(context, R.layout.item_assignment_dialog_list_layout, allUsersList);
        listView.setAdapter(arrayAdapter);
        listView.setOnItemClickListener((adapterView, view, which, l) -> {
            Log.d(TAG, "showAssignmentsList: " + allUsersList.get(which).getUserId());
           // TODO : Listen to click callbacks at the position
        });
        dialog.show();
    }

পদক্ষেপ - 6 ডায়লগ বাক্সে বৃত্তাকার কোণার পটভূমি দেওয়া

@ অঙ্কনযোগ্য / rectangle_round_corner_assignment_alert

    <?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#ffffffff" />
    <corners android:radius="16dp" />
    <padding
        android:bottom="16dp"
        android:left="16dp"
        android:right="16dp"
        android:top="16dp" />
</shape>

0

অ্যালার্টডায়লগ এডিটেক্সট ইউনিট তৈরির পরে সাধারণ ব্যবহারের জন্য ডাকা একটি পদ্ধতিটি কি সহজ নয়?

public static void EditTextListPicker(final Activity activity, final EditText EditTextItem, final String SelectTitle, final String[] SelectList) {
    EditTextItem.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            AlertDialog.Builder builder = new AlertDialog.Builder(activity);
            builder.setTitle(SelectTitle);
            builder.setItems(SelectList, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialogInterface, int item) {
                    EditTextItem.setText(SelectList[item]);
                }
            });
            builder.create().show();
            return false;
        }
    });
}

0
private void AlertDialogue(final List<Animals> animals) {
 final AlertDialog.Builder alertDialog = new AlertDialog.Builder(AdminActivity.this);
 alertDialog.setTitle("Filter by tag");

 final String[] animalsArray = new String[animals.size()];

 for (int i = 0; i < tags.size(); i++) {
  animalsArray[i] = tags.get(i).getanimal();

 }

 final int checkedItem = 0;
 alertDialog.setSingleChoiceItems(animalsArray, checkedItem, new DialogInterface.OnClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int which) {

   Log.e(TAG, "onClick: " + animalsArray[which]);

  }
 });


 AlertDialog alert = alertDialog.create();
 alert.setCanceledOnTouchOutside(false);
 alert.show();

}

যদিও এই কোডটি প্রশ্নের উত্তর দিতে পারে, কীভাবে এবং / বা কেন এটি সমস্যার সমাধান করে তা সম্পর্কিত অতিরিক্ত প্রসঙ্গ সরবরাহ করলে উত্তরের দীর্ঘমেয়াদী মান উন্নত হবে।
পিয়োটার লাবনস্কি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.