how to set a custom list view into a dialog box

android, dialog, listview

Solution

You are on the right track, Here is what i used to dynamically display a Dialog with a list of items in it.

For reference a similar Question was asked here : Android custom list dialog

    //String[] list_data; Preloaded with a String array

    final CharSequence[] items = new CharSequence[list_data.length];

            for (int i = 0; i < list_data.length; i++) {
               items[i] = list_data[i];
            }

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Select the data you want");
    builder.setItems(items, new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            //Get the id of the item
            diag_callback();

        }

    });

    AlertDialog alert = builder.create();
    alert.show();

}

public void diag_callback() {
    //Do someting when the user has made his selection
}

Hope this sorts out your problem.

Problem

I am developing a application which fetches some data from a web service and displays in a list view. I have implemented a custom adapter which is extended by BaseAdapter. In the `getView()` method I inflate the raw also.. Those are working perfectly. My problem is I have implemented code to show a dialog box when user click on an list item, but now I want to show another dialog box which has a custom list inside it (when Yes button clicked). I also want to show some data in that listview. [I have a ArrayList filled with the data that I wanted] . I'm writing the code inside my adapter class. Can anyone give me some idea how to do it ? This is my code: ``` public class NewsRowAdapter extends BaseAdapter { private Context mContext; private Activity activity; private static LayoutInflater inflater=null; private ArrayList<HashMap<String, String>> data; int resource; //String response; //Context context; //Initialize adapter public NewsRowAdapter(Context ctx,Activity act, int resource,ArrayList<HashMap<String, String>> d) { super(); this.resource=resource; this.data = d; this.activity = act; this.mContext = ctx; inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } public void dialogshow(final String Date,final String Start,final String End){ AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(activity); alertDialogBuilder.setTitle("Confirm your Action!"); // set dialog message alertDialogBuilder .setMessage("Click yes to exit!") .setCancelable(false) .setPositiveButton("Yes",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int id) { // if this button is clicked, close // current activity //MainActivity.this.finish(); // Toast.makeText(mContext, "Yes clicked", Toast.LENGTH_LONG).show(); //check similer records // ShortList sh = new ShortList(); // ArrayList<HashMap<String, String>> duplicateList; // duplicateList=sh.getDuplicated(Date, Start, End); //if duplicates > 1 then show the popup list // if(duplicateList.size()>1){ AlertDialog.Builder alertDialogBuilder2 = new AlertDialog.Builder(activity); LayoutInflater infl = activity.getLayoutInflater(); //View vi = infl.inflate(id, root) alertDialogBuilder2.setView(infl.inflate(R.layout.dialog_row, null)) .setPositiveButton("Accept", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(mContext, "Accepted", Toast.LENGTH_LONG).show(); } }) .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.dismiss(); } }); alertDialogBuilder2.show(); // } } }) .setNegativeButton("No",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int id) { // if this button is clicked, just close // the dialog box and do nothing dialog.cancel(); } }); alertDialogBuilder.show(); } @Override public View getView(final int position, View convertView, final ViewGroup parent) { View vi = convertView; if(convertView==null) vi = inflater.inflate(R.layout.row,null); final TextView firstname = (TextView) vi.findViewById(R.id.fname); final TextView lastname = (TextView) vi.findViewById(R.id.lname); final TextView startTime = (TextView) vi.findViewById(R.id.stime); final TextView endTime = (TextView) vi.findViewById(R.id.etime); final TextView date = (TextView) vi.findViewById(R.id.blank); final ImageView img = (ImageView) vi.findViewById(R.id.list_image); HashMap<String, String> song = new HashMap<String, String>(); song =data.get(position); firstname.setText(song.get(MainActivity.TAG_PROP_FNAME)); lastname.setText(song.get(MainActivity.TAG_PROP_LNAME)); startTime.setText(song.get(MainActivity.TAG_STIME)); endTime.setText(song.get(MainActivity.TAG_ETIME)); date.setText(song.get(MainActivity.TAG_DATE)); //imageLoader.DisplayImage(song.get(CustomizedListView.KEY_THUMB_URL), img); Button accept = (Button) vi.findViewById(R.id.button1); accept.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub final int x = (int) getItemId(position); /*Intent zoom=new Intent(mContext, Profile.class); zoom.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); zoom.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(zoom);*/ // get the intent from the hashmap check if there is similar date and time. //then store them in a list or array. String getDate = (String) date.getText(); String getStartTime = startTime.getText().toString(); String getEndTime = endTime.getText().toString(); dialogshow(getDate,getStartTime,getEndTime); } }); vi.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String getFname = firstname.getText().toString(); Toast.makeText(parent.getContext(), "view clicked: "+getFname , Toast.LENGTH_SHORT).show(); //get the id of the view //check the id of the request //call the web service acording to the id Intent zoom=new Intent(parent.getContext(), Profile.class); parent.getContext().startActivity(zoom); } }); return vi; } ```

Original source

Related problems