-3

Im trying to adapt list view to an alertDialog, the program crashes on dialog.setAdapter with NullPointerException.

The alertDialog should pop when user is clicking on item in listview.

ArrayAdapter<String> dialogAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, userFunc);
    lv.setAdapter(dialogAdapter);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {


            if (position == 0) {


                AlertDialog.Builder alertDialog = new AlertDialog.Builder(ManagerFunctions.this);
                LayoutInflater inflater = getLayoutInflater();
                View convertView = (View) inflater.inflate(R.layout.user_op_list, null);
                alertDialog.setView(convertView);
                alertDialog.setTitle("Choose option");
                lv = (ListView) convertView.findViewById(R.id.lv);

                alertDialog.show();

This line is the one I'm getting error on:

        lv.setAdapter(dialogAdapter);
Gabriele Mariotti
  • 320,139
  • 94
  • 887
  • 841

1 Answers1

0

got it, I needed to declare my ArrayAdapter as final, because it cannot be accessed from inner classes.

so:

final String[] userFunc = new String[]{"חדש","מחק","ערוך"};
    final ArrayAdapter<String> dialogAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, userFunc);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {


            if (position == 0) {


                AlertDialog.Builder alertDialog = new AlertDialog.Builder(ManagerFunctions.this);
                LayoutInflater inflater = getLayoutInflater();
                View convertView = (View) inflater.inflate(R.layout.user_op_list, null);
                alertDialog.setView(convertView);
                alertDialog.setTitle("מה ברצונך לעשות");
                lv = (ListView) convertView.findViewById(R.id.lv);
                lv.setAdapter(dialogAdapter);

                alertDialog.show();