본문 바로가기

PROGRAMING/Android

DialogFragment(AlertDialog) 안에 ListView 넣기 및 이벤트 받기 확인

DialogFragment 안에 ListView 넣기


Activity에 ListView 넣기와 다르지 않다.

CustomAdapter를 구현하여 View에 집어넣으면 된다.


  public Dialog onCreateDialog(Bundle savedInstanceState) {

    mCheckBoxHashMap= mListener.getCheckBoxHashMap();

    mCheckBoxArrayAdapter = new CheckBoxArrayAdapter(getActivity());

    mCheckBoxArrayAdapter.addAll(mCheckBoxHashMap.keySet());

   

   

    ListView tmp  = (ListView)getActivity().getLayoutInflater().inflate(R.layout.alert_dialogfragment_checkbox_list,null);

    tmp.setAdapter(mCheckBoxArrayAdapter);

    int title = getArguments().getInt("title");

        return new AlertDialog.Builder(getActivity())

              //  .setIcon(R.drawable.ic_launcher)

                .setTitle(title)

                //.setAdapter(mCheckBoxArrayAdapter, null)  

                .setView(tmp)

                .setPositiveButton(R.string.checkbox_list_alert_dialogfragment_ok,


setAdapter에 Adapter를 않넣고 listView에 setAdapter에 넣은 이유는

AlertDialog에 setAdapter에 CustomAdapter를 넣으면 getView에서 연결한 이벤트들이 작동을 하지 않기 때문이다.  아래의 onClick이벤트를 view에 연결하여 사용하고 있다. 위 빨간색으로 표시한 구문처럼 사용해야 아래 이벤트가 정상적으로 동작한다.


@Override 

 public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder=null;

~~~~~

viewHolder.cbId.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

LOG.i(CLASSNAME, "onClick");