获取列表视图中复选框的位置

时间:2013-02-17 06:06:25

标签: android listview checkbox onitemclicklistener

我有一个lisview,其中每行有三个文本框和一个复选框,我使用以下代码片段来获取已选中复选框的确切位置,这对我很有用,但现在我想把它放到不在listView.setOnItemClickListener,因为我想通过按钮删除已检查的项目而不是单击列表视图的项目或行,但我不知道在哪里放这些代码来实现我的目标,我会提前感谢您的关注和建议。

listView.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {

        CheckBox cbx = (CheckBox)view.findViewById(R.id.ChkOrder);

            int firstPosition = listView.getFirstVisiblePosition();
            for(int i=firstPosition;i<listView.getCount();i++){
            View v=listView.getChildAt(i);
            cbx = (CheckBox)v.findViewById(R.id.ChkOrder);
            if(cbx.isChecked()){

                 Toast.makeText(getApplicationContext(), 
                                 "Checked position " + goods.get(i), 
                                  Toast.LENGTH_SHORT).show();
                 checkedItemPosition=i;


           }
        }

     }

});

1 个答案:

答案 0 :(得分:0)

通过将其放在首选按钮并将视图更改为您在代码中声明的listview来解决此问题:

Button Delete=(Button)findViewById(R.id.DeleteButton);
       DeleteGoods.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                /** Getting the position of the currently selected item**/
                //////////////////////////////////
                 CheckBox cbx = (CheckBox)listView.findViewById(R.id.ChkOrder);

                    int firstPosition = listView.getFirstVisiblePosition();
                    for(int i=firstPosition;i<listView.getCount();i++){
                    View v1=listView.getChildAt(i);
                    cbx = (CheckBox)v1.findViewById(R.id.ChkOrder);
                    if(cbx.isChecked()){

                        // Toast.makeText(getApplicationContext(), 
                               //          "Checked position " + goods.get(i), 
                                //          Toast.LENGTH_SHORT).show();
                         checkedItemPosition=i;
                    }
                    }