在android中使用Checkbox数组

时间:2013-07-09 16:59:35

标签: android checkbox

我正在尝试使用listview的内置复选框方法制作listview checkbox 。我经历了一个stackoverflow帖子,我发现它运行正常,除了一个问题。

如果列表中有四个项目并假设,我检查了第二个和第三个项目,点击,它会根据需要显示第二个和第三个项目..但如果我先选择第三个然后选择第二个项目,并且然后我取消选中第一个,所以我必须留下第二个和第三个作为所需的输出。但它提供了第一个第二和第三项作为输出。

任何人都可以指导我吗?

这是java代码:

public class TailoredtwoActivity extends Activity implements OnItemClickListener, OnClickListener{

    Button btn1;
    ListView mListView;
    String[] array = new String[] {"Ham", "Turkey", "Bread"};

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tailoredtwo);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, array);

        mListView = (ListView) findViewById(R.id.listViewcity);
        mListView.setAdapter(adapter);
        mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

        Button button = (Button) findViewById(R.id.btn_tailortwo_submit);
        button.setOnClickListener(this);
    }

    public void onClick(View view) {
        SparseBooleanArray positions = mListView.getCheckedItemPositions();
        int size = positions.size();
        for(int index = 0; index < size; index++) {
            Toast.makeText(getApplicationContext(), array[positions.keyAt(index)].toString(), Toast.LENGTH_LONG).show();
        }
    }


    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        // TODO Auto-generated method stub

    }
}

1 个答案:

答案 0 :(得分:1)

onClick更改为

将以下内容视为类变量

StringBuilder builder;

然后

public void onClick(View view) {
    SparseBooleanArray positions = mListView.getCheckedItemPositions();
    builder = new StringBuilder();
    for(int index = 0; index <array.length; index++) {
         if(positions.get(index)==true)
         {
             builder.append(array[index]);
             builder.append("\n");
         }

    }
    Toast.makeText(getApplicationContext(),builder, Toast.LENGTH_LONG).show();
}