7

I have one scenario in which,when I click on Button I want the AlertDialog to popup. AlertDialog is a custom alert dialog as it has custom Listview.

I am using the following code to assign the AlertDialog OnClick of button

 top.setOnClickListener(new OnClickListener() {
 Context mcontext;
 @Override
 public void onClick(View arg0) {
 // TODO Auto-generated method stub
 LayoutInflater li = LayoutInflater.from(getActivity());
 View view= li.inflate(R.layout.topingslist, null);

 AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity());
 alertDialogBuilder.setView(view);
 ListView lv2 = (ListView) getActivity().findViewById(R.id.toplist);
 ArrayList<SearchResultsToping> results1 = new ArrayList<SearchResultsToping>();
 SearchResultsToping sr1;                                               
 sr1 = new SearchResultsToping();
 sr1.setToppingname("cheese");
 results1.add(sr1);
 MyCustomBaseAdapterTop arrayAdapter=new MyCustomBaseAdapterTop(getActivity(), results1);
 lv2.setAdapter(arrayAdapter);
 lv2.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
    // TODO Auto-generated method stub
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub

    }

    });

   alertDialogBuilder
        .setCancelable(false)
        .setPositiveButton("OK",new DialogInterface.OnClickListener() 
                  public void onClick(DialogInterface dialog,int id) {
                      })
        .setNegativeButton("Cancel",  new DialogInterface.OnClickListener() {
                 public void onClick(DialogInterface dialog,int id) {
                    dialog.cancel()
               }
            });

        // create alert dialog
        AlertDialog alertDialog = alertDialogBuilder.create();
        // show it
        alertDialog.show();
    }
  });

This is my customBaseadapter to customlistview

public class MyCustomBaseAdapterTop extends BaseAdapter {
    private static ArrayList<SearchResultsToping> searchArrayListtop;
    private LayoutInflater mInflater;
     Context ctx=null;

     public MyCustomBaseAdapterTop(Activity activty, ArrayList<SearchResultsToping> results1) {
          searchArrayListtop = results1;

          this.ctx=activty;
          mInflater = activty.getLayoutInflater();  

    }


    @Override
    public int getCount() {
        // TODO Auto-generated method stub
    //  return 0;
        return searchArrayListtop.size();
    }

    @Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return null;

        //return searchArrayListtop.get(arg0);
    }

    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int arg0, View convertView, ViewGroup arg2) {
        // TODO Auto-generated method stub

        final ViewHolder holder;
        if (convertView == null) {

            Log.d("base", "listbase");
       convertView = mInflater.inflate(R.layout.each_toping, null);
       holder = new ViewHolder();


      holder.txttopname = (TextView) convertView.findViewById(R.id.topname);


       convertView.setTag(holder);
      } else {
       holder = (ViewHolder) convertView.getTag();
      }

      holder.txttopname.setText(searchArrayListtop.get(arg0).getToppingname());
      return convertView;

}
static class ViewHolder {
        TextView txttopname;
        }

}

This is topinglist.xml file

<?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/toplist" 
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:cacheColorHint="#0000"
            android:divider="@android:color/transparent"
            android:dividerHeight="0dp" />        
</LinearLayout>

The line on which I am setting the Adapter to Listview lv2.setAdapter(arrayAdapter); is giving me NullPointerException please help me to achieve this.

2
  • post your R.layout.topingslist layout code Commented Nov 27, 2013 at 6:04
  • did you add my below code ListView lv2 = (ListView) view.findViewById(R.id.toplist);? Commented Nov 27, 2013 at 10:14

2 Answers 2

5

Within alert dialog builder change below line

ListView lv2 = (ListView) getActivity().findViewById(R.id.toplist);

with

ListView lv2 = (ListView) view.findViewById(R.id.toplist);
Sign up to request clarification or add additional context in comments.

Comments

0

Use DialogFragment

add listview into it set adapter to it. and do whatever you want to do

2 Comments

I dnt want any changes in my main activity. as it already contains fragments. Does this dailog fragment replaces the current fragment?? or it pops up like alertdialog??
it will be like a dialog. dont worry go ahead with this. DialogFragment fragment = new DialogFragment (); fragment.show(getSupportFragmentManager(), "MAGICAL_TAG"); Its an replacement of alert dialog with better life cycle and better customization control. accept the answer if you think it helped you

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.