Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中将自定义列表视图中的选中项添加到数组列表_Android_Checkbox_Android Listview_Custom Adapter_Custom Lists - Fatal编程技术网

在android中将自定义列表视图中的选中项添加到数组列表

在android中将自定义列表视图中的选中项添加到数组列表,android,checkbox,android-listview,custom-adapter,custom-lists,Android,Checkbox,Android Listview,Custom Adapter,Custom Lists,您好,我正在编写一个程序使用自定义listview与复选框。我的目的是在单击按钮(添加)时启动一个新活动,新活动将显示列表视图中选定的值。尝试添加值时出错 发生错误的行是 选择editems.add(adapter.getItem(position)) 如果我对这行进行注释,那么我可以选中该框,但当我单击“添加”按钮时,它会显示eror 这是我的完整代码 我的主要活动 HomePage.java public class HomePage extends Activity { private L

您好,我正在编写一个程序使用自定义listview与复选框。我的目的是在单击按钮(添加)时启动一个新活动,新活动将显示列表视图中选定的值。尝试添加值时出错

发生错误的行是

选择editems.add(adapter.getItem(position))

如果我对这行进行注释,那么我可以选中该框,但当我单击“添加”按钮时,它会显示eror

这是我的完整代码

我的主要活动

HomePage.java

public class HomePage extends Activity {
private ListView listView1;
ListAdapter adapter;
Button btn;
SparseBooleanArray checkedValue;
ArrayList<List> selectedItems;
String name;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home_page);

    List device_data[] = new List[]
                {
        new List(R.drawable.ic_pic , "Actvity1"),
        new List(R.drawable.ic_pic, "Actvity2"),
        new List(R.drawable.ic_pic, "Actvity3"),
        new List(R.drawable.ic_pic, "Actvity4"),
        new List(R.drawable.ic_pic, "Actvity5")

                     };


    ListAdapter adapter = new ListAdapter(this,  R.layout.list_viewrow, device_data);

        listView1 = (ListView)findViewById(R.id.listView1);

       View header = (View)getLayoutInflater().inflate(R.layout.listview_header, null);
       listView1.addHeaderView(header);

       listView1.setAdapter(adapter);


       Log.i("check box status", ""+ListAdapter.ListHolder.class);

             btn= (Button)findViewById(R.id.add);
             btn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {


                        String[] outputStrArr = new String[selectedItems.size()];
                        checkedValue= listView1.getCheckedItemPositions();
                        for (int i = 0; i < selectedItems.size(); i++) {
                            outputStrArr[i] = selectedItems.get(i).toString();
                        }
                        Intent intent = new Intent(getApplicationContext(),
                               CheckedValues.class);
                         Bundle b = new Bundle();
                         b.putStringArray("selectedItems", outputStrArr);

                         // Add the bundle to the intent.
                         intent.putExtras(b);
                        startActivity(intent);
                    }
                });


      }
private class ListAdapter extends ArrayAdapter<List> {
    Context context; 
    int layoutResourceId;   
    boolean checkvalue;
    List data[] = null;

    public ListAdapter(Context context, int layoutResourceId, List[] data) {
        super(context, layoutResourceId, data);
        this.layoutResourceId = layoutResourceId;
        this.context = context;
        this.data = data;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        View row = convertView;
        final ListHolder holder;

        if(row == null)
        {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);

            holder = new ListHolder();
            holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
            holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
            holder.checkbox=(CheckBox) row.findViewById(R.id.check);


           holder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

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


                         selectedItems.add(adapter.getItem(position));



                }


              });

            row.setTag(holder);
        }
        else
        {
            holder = (ListHolder)row.getTag();
        }

        List list = data[position];
        holder.txtTitle.setText(list.title);
        holder.imgIcon.setImageResource(list.icon);

        return row;
    }


    class ListHolder
    {
        ImageView imgIcon;
        TextView txtTitle;
        CheckBox checkbox;
    }

}
}
public class CheckedValues extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_checked_values);

    Bundle b = getIntent().getExtras();
    String[] resultArr = b.getStringArray("selectedItems");
    ListView lv = (ListView) findViewById(R.id.outputList);

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

}
公共类主页扩展活动{
私有列表视图列表视图1;
列表适配器;
按钮btn;
SparseBooleanArray checkedValue;
ArrayList selectedItems;
字符串名;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u主页);
列表设备_数据[]=新列表[]
{
新列表(R.drawable.ic_pic,“Actvity1”),
新列表(R.drawable.ic_pic,“Actvity2”),
新列表(R.drawable.ic_pic,“Actvity3”),
新列表(R.drawable.ic_pic,“Actvity4”),
新列表(R.drawable.ic_pic,“Actvity5”)
};
ListAdapter=新ListAdapter(此,R.layout.list\u视图行,设备\u数据);
listView1=(ListView)findViewById(R.id.listView1);
视图标题=(视图)GetLayoutFlater()。充气(R.layout.listview_标题,null);
listView1.addHeaderView(标题);
listView1.setAdapter(适配器);
Log.i(“复选框状态”,“”+ListAdapter.ListHolder.class);
btn=(按钮)findViewById(R.id.add);
btn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
String[]outputStrArr=新字符串[selectedItems.size()];
checkedValue=listView1.GetCheckEditePositions();
对于(int i=0;i
还有我的第二项活动

CheckedValues.java

public class HomePage extends Activity {
private ListView listView1;
ListAdapter adapter;
Button btn;
SparseBooleanArray checkedValue;
ArrayList<List> selectedItems;
String name;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home_page);

    List device_data[] = new List[]
                {
        new List(R.drawable.ic_pic , "Actvity1"),
        new List(R.drawable.ic_pic, "Actvity2"),
        new List(R.drawable.ic_pic, "Actvity3"),
        new List(R.drawable.ic_pic, "Actvity4"),
        new List(R.drawable.ic_pic, "Actvity5")

                     };


    ListAdapter adapter = new ListAdapter(this,  R.layout.list_viewrow, device_data);

        listView1 = (ListView)findViewById(R.id.listView1);

       View header = (View)getLayoutInflater().inflate(R.layout.listview_header, null);
       listView1.addHeaderView(header);

       listView1.setAdapter(adapter);


       Log.i("check box status", ""+ListAdapter.ListHolder.class);

             btn= (Button)findViewById(R.id.add);
             btn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {


                        String[] outputStrArr = new String[selectedItems.size()];
                        checkedValue= listView1.getCheckedItemPositions();
                        for (int i = 0; i < selectedItems.size(); i++) {
                            outputStrArr[i] = selectedItems.get(i).toString();
                        }
                        Intent intent = new Intent(getApplicationContext(),
                               CheckedValues.class);
                         Bundle b = new Bundle();
                         b.putStringArray("selectedItems", outputStrArr);

                         // Add the bundle to the intent.
                         intent.putExtras(b);
                        startActivity(intent);
                    }
                });


      }
private class ListAdapter extends ArrayAdapter<List> {
    Context context; 
    int layoutResourceId;   
    boolean checkvalue;
    List data[] = null;

    public ListAdapter(Context context, int layoutResourceId, List[] data) {
        super(context, layoutResourceId, data);
        this.layoutResourceId = layoutResourceId;
        this.context = context;
        this.data = data;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        View row = convertView;
        final ListHolder holder;

        if(row == null)
        {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);

            holder = new ListHolder();
            holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
            holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
            holder.checkbox=(CheckBox) row.findViewById(R.id.check);


           holder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

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


                         selectedItems.add(adapter.getItem(position));



                }


              });

            row.setTag(holder);
        }
        else
        {
            holder = (ListHolder)row.getTag();
        }

        List list = data[position];
        holder.txtTitle.setText(list.title);
        holder.imgIcon.setImageResource(list.icon);

        return row;
    }


    class ListHolder
    {
        ImageView imgIcon;
        TextView txtTitle;
        CheckBox checkbox;
    }

}
}
public class CheckedValues extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_checked_values);

    Bundle b = getIntent().getExtras();
    String[] resultArr = b.getStringArray("selectedItems");
    ListView lv = (ListView) findViewById(R.id.outputList);

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

}
公共类CheckedValues扩展活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u检查值);
Bundle b=getIntent().getExtras();
String[]resultArr=b.getStringArray(“selectedItems”);
ListView lv=(ListView)findViewById(R.id.outputList);
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple_list_item_1,resultar);
低压设置适配器(适配器);
}
}

提前感谢。

初始化“ArrayList”

arraylistselecteditems;
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u主页);
selectedItems=newarraylist();
}
。如果有帮助,请检查此项。