Custom ListView in a dialog

22,609

Solution 1

You need to use AlertDialog.Builder -

Refer this- Docs

Edit -

new AlertDialog.Builder(MyActivity.this)
                    .setAdapter(yourListAdapter, new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                         //TODO - Code when list item is clicked (int which - is param that gives you the index of clicked item)
                        }
                    })
                    .setPositiveButton("Okay", new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {

                        }
                    })
                    .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                        }
                    })
                    .setTitle("Dialog Title")
                    .setCancelable(false)
                    .show();

Solution 2

@Vishal is right, you needs to use AlertDialog if you needs to inflate view inside your dialog. Here's the example code. Tried the code below.

public void showDialog(){
    AlertDialog.Builder dialog = new AlertDialog.Builder(getContext());     
    dialog.setTitle("List of likers");
    dialog.setCancelable(true);

    View view = ((Activity)getContext()).getLayoutInflater().inflate(R.layout.likers_list, null); 

    dbobj = new DataBaseHandler(getContext());
    likeItems=dbobj.select_HowlikeComment();
    dbobj.CloseDataBase();


    ListView list = (ListView) view.findViewById(R.id.ListLikersList);
    LikersCustomeAdapter adapter= new LikersCustomeAdapter(getContext(), R.layout.likerscustomelist, likeItems);

    list.setAdapter(adapter);

    dialog.setView(view);
    dialog.show();
}
Share:
22,609
Jehad
Author by

Jehad

Updated on July 05, 2022

Comments

  • Jehad
    Jehad almost 2 years

    i have a list view , inside this list when click on an item of it ,it will show a custom list inside a dialog box

    the dialog shows up but its only shows the title of the dialog

    here is my code

                case R.id.CommentNumOfLike:
    
                dbobj = new DataBaseHandler(getContext());
                Items1 = dbobj.select_HowComment();
                dbobj.CloseDataBase();
                Collections.reverse(Items1);
                x = (Integer) view.getTag();
                Log.v("value", x + "");
                target = Items1.get(x).getCommentId().toString();
                CommentEvents r = new CommentEvents();
                r.execute(user_id, secret_id, table, target);
    
                                final Dialog dialog = new Dialog(getContext());
                dialog.setContentView(R.layout.likers_list);
                dialog.setTitle("List of likers");
                dialog.setCanceledOnTouchOutside(true);
                dbobj = new DataBaseHandler(getContext());
                likeItems=dbobj.select_HowlikeComment();
                dbobj.CloseDataBase();
    
                ListView list = (ListView) dialog.findViewById(R.id.ListLikersList);
                LikersCustomeAdapter adapter= new LikersCustomeAdapter(getContext(), R.layout.likerscustomelist, likeItems);
    
                list.setAdapter(adapter);
    
                dialog.show();
    
                break; 
    

    this is my adapter

     public class LikersCustomeAdapter  extends ArrayAdapter<LikersComment>{
    Context context;
    List<LikersComment> items;
    Bitmap bitmap;
    String imageUser = "";
    String filePath_Image = "/Pictures/jehad/joj/";
    
    
    public LikersCustomeAdapter(Context context, int textViewResourceId,
            List<LikersComment> objects) {
        super(context, textViewResourceId, objects);
        // TODO Auto-generated constructor stub
        this.context=context;
    }
    
    public View getView(final int position, View convertView, ViewGroup parent) {
        Log.d("View likers List", "View>>>>>>>>");
        likerscommentholder h = null;
        View v = convertView;
    
        Log.v("items getName", items.get(position).getName());
        LayoutInflater vi = (LayoutInflater) context
                .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    
        if (v == null) {
            v = vi.inflate(R.layout.likerscustomelist,null);
            h = new likerscommentholder();
        h.likersimg=(ImageView)v.findViewById(R.id.likersImg);
        h.likersname=(TextView)v.findViewById(R.id.likersName); 
    
            v.setTag(h);
    } else {
        h = (likerscommentholder) v.getTag();
    }
    
    
    
        imageUser = items.get(position).getId() + items.get(position).getRand();
        boolean flag_ImagePath = Methods.checkIfImage_DirExists(filePath_Image
                + imageUser);
        if (flag_ImagePath == true) {
            Log.v("flag_ImagePath", String.valueOf(flag_ImagePath));
            bitmap = Methods.displayBitmapImage(imageUser);
            h.likersimg.setImageBitmap(bitmap);
        }
        h.likersname.setText(items.get(position).getName());
        return v;
    
    
    }
    }
     class likerscommentholder {
    ImageView likersimg;
    TextView likersname;
    
     }
    

    this is the list view

    likers_list.xml

        <?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:orientation="vertical" >
    
    <ListView
        android:id="@+id/ListLikersList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>
    

    this is the custom layout

    likerscustomelist.xml

          <?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:orientation="vertical" >
    
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
        <ImageView
            android:id="@+id/likersImg"
           android:layout_width="65dp"
            android:layout_height="65dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:src="@drawable/ic_launcher" />
    
        <TextView
            android:id="@+id/likersName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="16dp"
            android:layout_marginTop="19dp"
            android:layout_toRightOf="@+id/likersImg"
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium" />
    
    </RelativeLayout>
    
     </LinearLayout>
    
  • Jehad
    Jehad over 10 years
    can you give me an example of it