1

アダプタが構築するListView内のチェックボックスでクリックイベントをキャプチャし、ListViewを開始したビューで使用する必要があるanArrayListを構築しています

HiddenChannelsListAdapter.java

これは、getView()のcustomAdapater部分です。

public class HiddenChannelsListAdapter extends BaseAdapter {
     public ArrayList<String> slist;


CheckBox checkbox = (CheckBox) convertView.findViewById(R.id.check_channel);
        checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
            {

                if ( isChecked ) {
                    if ( !slist.contains(i.get("id")) )
                    slist.add(i.get("id"));
                } else {
                    for (int j=0;j<slist.size();j++) {
                        if ( slist.get(j) == i.get("id") ) {
                            slist.remove(j);
                        }
                    }       
                }
            }           
        });

今私のクラスでChannelsDialogPreference.java:

 @Override
    public void onClick (DialogInterface dialog, int which)
    {
        super.onClick(dialog, which);
        if(which == -1) {
           **here I need that slist ArrayList**
        }
    }
4

1 に答える 1

1

ChannelsDialogPreference 内でslist配列リストを静的として初期化し、 HiddenChannelsListAdapter 内の slist の値を変更します。

HiddenChannelsListAdapter 内:

CheckBox checkbox = (CheckBox) convertView.findViewById(R.id.check_channel);
        checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
            {

                if ( isChecked ) {
                    if ( !slist.contains(i.get("id")) )
                    ChannelsDialogPreference.slist.add(i.get("id"));
                } else {
                    for (int j=0;j<slist.size();j++) {
                        if ( slist.get(j) == i.get("id") ) {
                            ChannelsDialogPreference.slist.remove(j);
                        }
                    }       
                }
            }           
        });

ChannelsDialogPreference クラス内:

    public static ArrayList<String> slist = new ArrayList<String>();
 @Override
    public void onClick (DialogInterface dialog, int which)
    {
        super.onClick(dialog, which);
        if(which == -1) {
         //Now your can Use your Updated slist  here.
        }
    }

それが役立つことを願っています。

于 2013-03-04T10:33:56.860 に答える