Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

android- setAdapter on AlertDialog not working

I am making a list of the user's tumblr blogs in a pop-box. All of this happens within a Handler. Here is the code:

private class PicHandler extends Handler{
    Context c;
    String name;
    JumblrClient client;
    public PicHandler(Context context, String n, JumblrClient cl){
        c=context;
        name = n;
        client = cl;
    }
    public void handleMessage(Message msg)
    {
        final String[] cs = preferences.getString("allBlogs", "").split(",");
        for (String s : cs){
            Log.d("DrawLog", s); //logs the blogs correctly
        }

        ListAdapter adapter = new ArrayAdapter<String>(
                getApplicationContext(), android.R.layout.simple_selectable_list_item, cs);
        Log.d("DrawLog", (String) adapter.getItem(0)); //logs the first blog correctlys
        new AlertDialog.Builder(c)
        .setTitle("Choose blog")
        .setMessage("Choose the blog to publish the .gif")
        .setAdapter(adapter, new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int which) {
                        String root_sd = Environment.getExternalStorageDirectory().toString();
                        File file = new File( root_sd + "/Flippy/" + name) ;  
                        if(file.exists()){
                            Log.d("DrawLog", "file exists"); //file exists
                            Log.d("DrawLog", file.getPath());
                        }

                        PhotoPost post;
                        try {
                            post = client.newPost(cs[which], PhotoPost.class); 
                            //Photo p = new Photo();

                            post.setData(file);
                            Log.d("DrawLog" , post.toString()+"");

                            post.save();
                        } catch (IllegalAccessException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        } catch (InstantiationException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        catch(NullPointerException e){
                            Log.d("DrawLog", "null pointer wtf");
                        }

                   }
                }).create().show();         
        }
}

All the logs log the right things... It's just when the alert displays there is no list. Any ideas why?

like image 210
Dylan Milligan Avatar asked Dec 29 '25 17:12

Dylan Milligan


1 Answers

You can either use setMessage() or setAdapter(). They are mutually exclusive. If you use both, the message wins. A solution would be to remove setMessage() and use setTitle() instead.

like image 190
sergej shafarenka Avatar answered Jan 01 '26 08:01

sergej shafarenka



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!