1

我在我的 ListView 内的 Checkboxes 上捕获单击事件,适配器构建并构建我需要在启动 ListView 的视图中使用的一个ArrayList

HiddenChannelsListAdapter.java

这是我在 getView() 中的 customAdapter 部分

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 中将您的slistarraylist 初始化为静态并更改 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 回答