检测触摸了哪个复选框? Array Java Android Studio

时间:2017-10-02 05:46:49

标签: java android arrays android-checkbox

我设置了CheckBox ArrayList,但我怎么知道触摸了哪一个?更具体地说,我只想在触摸了复选框的ArrayList中获得“i”的整数值。有任何想法吗?

@Override
    public void sendData(String userText, String userNotes) {

        //we can create the saves here as well....

        LinearLayout ll = (LinearLayout)findViewById(R.id.myLayout);
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        CheckBox tv = new CheckBox(getApplicationContext());
        tv.setTextSize(20);
        tv.setText(userText + "  \n" + date);
        tv.setLayoutParams(lp);
        checkBoxArrayList.add(tv);

        //Handles if checkbox is pressed down, and set id for each check box
        for(int i = 0; i < checkBoxArrayList.size(); i ++){

            checkBoxArrayList.get(i).setId(i);

            checkBoxArrayList.get(i).setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View view, MotionEvent motionEvent) {

                    switch(motionEvent.getAction()) {

                        case MotionEvent.ACTION_DOWN:
                            //here we will simply open the files unless held down

                            //when held down
                            view.postDelayed(runnable, 1250);
                            break;

                    }
                    return false;
                }
            });
            }

            //add checkbox passed in to the layout
            ll.addView(tv);
        }

感谢@rex我只需要一个全局私有整数checkboxPopupCheck。我在案例MotionEvent.ACTION_DOWN中添加了它。我现在可以根据需要使用这个整数。

checkboxPopupCheck = view.getId();

2 个答案:

答案 0 :(得分:2)

您的onTouch方法有两个参数,第一个是触摸的视图。

所以做一个简单的view.getId()会返回你用

设置的相同ID
checkBoxArrayList.get(i).setId(i);

,这是ArrayList的整数值

答案 1 :(得分:0)

在适配器中尝试此代码,单击复选框,您必须创建一个新的数组列表,并将持有者的位置或值添加到数组列表中,这样您就可以知道正在检查的项目是什么。

&#13;
&#13;
holderItem.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked){
                    // add in to a arraylist 
                }else{
                    // remove it from arraylist
                }

            }
        });
&#13;
&#13;
&#13;