1

我正在尝试listview使用checkbox listview 的内置复选框方法。我浏览了一篇 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

    }
}
4

1 回答 1

1

改变你onClick

Delcare 下面作为类变量

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();
}
于 2013-07-09T17:31:41.100 回答