Skip to content Skip to sidebar Skip to footer

How Can I Link A Listview To An Alertdialog

I have created a seperate ListView Class which will show the name of the company.Now I want to pass this listview to the AlertDialog on Main Activity. I have created a list layout

Solution 1:

Just create a custom dialog as below :

http://www.edumobile.org/android/custom-listview-in-a-dialog-in-android/

or see example below :

privatevoidshowDialog(){

    finalDialogdialog=newDialog(this);

    Viewview= getLayoutInflater().inflate(R.layout.dialog_main, null);

    ListViewlv= (ListView) view.findViewById(R.id.custom_list);

    // Change MyActivity.this and myListOfItems to your own valuesCustomListAdapterDialogclad=newCustomListAdapterDialog(MyActivity.this, myListOfItems);

    lv.setAdapter(clad);

    lv.setOnItemClickListener(........);

    dialog.setContentView(view);

    dialog.show();

}

Solution 2:

call this on Button Click
 privatevoidAlert(){
        Viewview= getLayoutInflater().inflate(R.layout.rating_dialog_layout, null);
        ListViewdetails= (ListView) view.findViewById(R.id.ratingListViewId);
        Adapteradapter=newAdapter(bean,getApplicationContext());
        details.setAdapter(adapter);

        android.support.v7.app.AlertDialog.Builderbuilder=newandroid.support.v7.app.AlertDialog.Builder(MainActivity.this);
        builder.setTitle("Select");
        builder.setView(view);

        builder.setCancelable(false);
        builder.setNegativeButton("close", newDialogInterface.OnClickListener() {
            @OverridepublicvoidonClick(DialogInterface dialogInterface, int i) {
                dialogInterface.dismiss();
            }
        });
        detailsbtn.setOnItemClickListener(newAdapterView.OnItemClickListener() {
            @OverridepublicvoidonItemClick(final AdapterView<?> adapterView, View view, finalint i, long l) {

                alertdialog.dismiss();
            }
        });
        alertdialog = builder.create();
        alertdialog.show();
    }

use Bean Class

publicclassBean {
    publicBean(String _id, String description) {
        this._id = _id;
        this.description = description;
    }

    String _id;
    String description;

    public String get_id() {
        return _id;
    }

    publicvoidset_id(String _id) {
        this._id = _id;
    }

    public String getDescription() {
        return description;
    }

    publicvoidsetDescription(String description) {
        this.description = description;
    }
}

use Adapter

publicclassAdapterextendsBaseAdapter {

    Context context;
    List<Bean> list=newArrayList<Bean>();

    publicAdapter(ArrayList<Bean> list, Context context) {
        this.context = context;
        this.list = list;
    }

    @OverridepublicintgetCount() {
        return list.size();
    }

    @Overridepublic Object getItem(int position) {
        return list.get(position);
    }

    @OverridepubliclonggetItemId(int position) {
        return position;
    }

    @Overridepublic View getView(int position, View convertView, ViewGroup parent) {


        LayoutInflater inflater=LayoutInflater.from(context);
        View v=inflater.inflate(R.layout.rating_layout_row,null);

        TextView idTv= (TextView) v.findViewById(R.id.id);
        TextView nameTv= (TextView) v.findViewById(R.id.name);

        idTv.setText(String.valueOf(list.get(position)._id()));
        nameTv.setText(list.get(position).getDescription());
        return v;
    }
}

create rating_layout_row

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"android:padding="@dimen/activity_vertical_margin"><TextViewandroid:id="@+id/id"android:textColor="#000000"android:layout_width="match_parent"android:visibility="gone"android:layout_height="wrap_content"/><TextViewandroid:id="@+id/name"android:textColor="#000000"android:layout_width="match_parent"android:layout_height="wrap_content"/></LinearLayout>

create custom layout rating_dialog_layout

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><ListViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/ratingListViewId"android:layout_gravity="center_horizontal" /></LinearLayout>

Solution 3:

If your purpose is show a list inside dialog, please read alert dialog document: Alert dialog

Builder class of Alert dialog have many method to implement a list:

builder.setItems for list string
builder.setMultiChoiceItems
builder.setSingleChoiceItems

Solution 4:

You can create a simple list alert dialog with following code...

AlertDialog.BuilderalertDialogBuilder=newAlertDialog.Builder(mContext);
alertDialogBuilder.setTitle("Awesome alert")
.setCancelable(false)
.setAdapter(newNotificationListAdapter(mContext, listItems), newDialogInterface.OnClickListener() {
        publicvoidonClick(DialogInterface dialog, int id) {

            // on item click...

            dialog.cancel();
        }
    })
.setPositiveButton(getString(R.string.close), newDialogInterface.OnClickListener() {
        publicvoidonClick(DialogInterface dialog, int id) {

            dialog.cancel();

        }
    });
AlertDialogalertDialog= alertDialogBuilder.create();
alertDialog.show();

Try BaseAdapter like this.

publicclassNotificationListAdapterextendsBaseAdapter {

private Context mContext;
private List<NotificationModel> notificationModels;

publicNotificationListAdapter(Context mContext, List<NotificationModel> notificationModels) {
    this.mContext = mContext;
    this.notificationModels = notificationModels;
}

@OverridepublicintgetCount() {
    return notificationModels.size();
}

@Overridepublic NotificationModel getItem(int i) {
    return notificationModels.get(i);
}

@OverridepubliclonggetItemId(int i) {
    return i;
}

@Overridepublic View getView(int position, View view, ViewGroup viewGroup) {

    NotificationViewHolder notificationViewHolder;

    if (view == null) {

        LayoutInflatermInflater= (LayoutInflater) mContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        view = mInflater.inflate(R.layout.item_notification, null);

        notificationViewHolder = newNotificationViewHolder();

        notificationViewHolder.item_view = (RelativeLayout) view.findViewById(R.id.notification_item);
        notificationViewHolder.textView_notification = (TextView) view.findViewById(R.id.tv_notification);
        notificationViewHolder.textView_time = (TextView) view.findViewById(R.id.tv_notification_time);

        view.setTag(notificationViewHolder);

    } else {
        notificationViewHolder = (NotificationViewHolder) view.getTag();
    }

    NotificationModelnotificationModel= getItem(position);

    // UI Update...(Data binding)return view;
}

privateclassNotificationViewHolder {
    RelativeLayout item_view;
    TextView textView_notification, textView_time;
}
}

If you need more info about this. Please comment below...Happy coding...

Solution 5:

In your main activity write:

publicclassMainActivityextendsAppCompatActivity {

@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.option_menu_laout);

    Button button=(Button) findViewById(R.id.button);

    button.setOnClickListener(newView.OnClickListener() {
        @OverridepublicvoidonClick(View view) {
            openCompaniesActivity()
        }
    });
}

publicvoidopenCompaniesActivity()(){   
    startActivity(newIntent(this, ListViewActivity.class));
  }
}

Your ListViewActivity:

publicclassListViewActivityextendsActivity{

String[] company;

@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_layout);
    populateListView();

}
privatevoidpopulateListView() {
    //Create list of items
    company= getResources().getStringArray(R.array.company_name);
    //Build Adapter
    ArrayAdapter<String> adapter=newArrayAdapter<String>(
            this, //Context for the Activity
            R.layout.first_alertlist_textstyle,
            android.R.id.text1,//Layout to use
            company); //Items to be displayed//Configure the list viewListViewcompanyList=(ListView) findViewById(R.id.list_view);
    companyList.setAdapter(adapter);
    companyList.setOnItemsClickListener(newAdapterView.OnItemClickListener() {
            @OverridepublicvoidonItemClick(AdapterView<?> parent, View view, int position, long id) {
                StringselectedCompany= company[position];
                //Create you dialog, depending from selected company.
                AlertDialog.Builderbuilder=newAlertDialog.Builder(ListViewActivity.this);
                LayoutInflaterinflater= ListViewActivity.this.getLayoutInflater();
                ViewdialogView= inflater.inflate(R.layout.diallog_layout, null);
                builder.setView(dialogView);
                builder.setCancelable(true);
                builder.setTitle("Contact");
                builde.show(); 
            }
        })

  }
}

Do not forget to add all needed activities to manifest.

Post a Comment for "How Can I Link A Listview To An Alertdialog"