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"