列表视图有多个选中复选框

时间:2016-03-04 05:30:01

标签: android listview

我遇到了一些问题,我点击按钮时会有一个按钮,它应该进入第二个活动,其中包含带有复选框的列表视图,我可以在列表中选择任意数量的项目,选择后我应该返回所选项目在主要活动的编辑框中。

谢谢你。

公共类MainActivity扩展了AppCompatActivity {

private ListView llChb;
Button save;

private String[] data = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
        "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w",
        "x", "y", "z" };
private ArrayList<String> arrData=null;

private ArrayList<InfoRowdata> infodata;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    save= (Button) findViewById(R.id.button_save);
    save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });

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

    infodata = new ArrayList<InfoRowdata>();
    for (int i = 0; i < data.length; i++) {
        infodata.add(new InfoRowdata(false, i));
        // System.out.println(i);
        //System.out.println("Data is == "+data[i]);
    }
    llChb.invalidate();
    llChb.setAdapter(new MyAdapter());
}
public class MyAdapter extends BaseAdapter {

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return data.length;
    }

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

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

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View row = null;
        row = View.inflate(getApplicationContext(), R.layout.rowxml, null);
        TextView tvContent=(TextView) row.findViewById(R.id.tvContent);
        //tvContent.setText(data[position]);
        tvContent.setText(data[position]);
        //System.out.println("The Text is here like.. == "+tvContent.getText().toString());

        final CheckBox cb = (CheckBox) row
                .findViewById(R.id.chbContent);
        cb.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if (infodata.get(position).isclicked) {
                    infodata.get(position).isclicked = false;
                } else {
                    infodata.get(position).isclicked = true;
                }

                for(int i=0;i<infodata.size();i++)
                {
                    if (infodata.get(i).isclicked)
                    {
                        System.out.println("Selectes Are == "+ data[i]);
                    }
                }
            }
        });

        if (infodata.get(position).isclicked) {

            cb.setChecked(true);
        }
        else {
            cb.setChecked(false);
        }
        return row;


    }

}

以上代码是我的第二项活动。

2 个答案:

答案 0 :(得分:0)

您可以multiple choice mode使用listview,然后通过sparseBooleanArray获取已检查的项目,然后使用Intent

将您的选择发送到mainActivity

答案 1 :(得分:0)

这是我从您的查询中理解的内容。 我们需要做的是: 使用按钮单击事件创建具有多个选择模式的ListView。 在按钮单击事件上,我们检索选定的列表视图项并创建包含所选项目数组的Bundle并将其存储在Intent中并启动另一个活动。

public void onClick(View v) {
    SparseBooleanArray checked = listView.getCheckedItemPositions();
    ArrayList<String> selectedItems = new ArrayList<String>();
    for (int i = 0; i < checked.size(); i++) {
        // Item position in adapter
        int position = checked.keyAt(i);
        // Add data if it is checked i.e. (== TRUE!)
        if (checked.valueAt(i))
            selectedItems.add(adapter.getItem(position));
    }
      String[] outputStrArr = new String[selectedItems.size()];

    for (int i = 0; i < selectedItems.size(); i++) {
        outputStrArr[i] = selectedItems.get(i);
    }

    Intent intent = new Intent(getApplicationContext(),
            NextActivity.class);

    // Create a bundle object
    Bundle b = new Bundle();
    b.putStringArray("selectedItems", outputStrArr);

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

    // start the NextActivity
    startActivity(intent);
相关问题