2017-10-02 1 views
2

J'ai un CheckBoxArrayList mis en place, mais comment puis-je savoir lequel est touché? Plus précisément, je voudrais simplement obtenir la valeur entière de "i" dans le ArrayList dont la case à cocher a été touchée. Des idées?Détecter la case cochée? Array Java Android Studio

@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); 
     } 

Grâce à @rex j'ai simplement eu un entier privé checkboxPopupCheck. Je l'ai ajouté à l'intérieur du cas MotionEvent.ACTION_DOWN. Je peux maintenant utiliser cet entier pour ce dont j'ai besoin.

checkboxPopupCheck = view.getId(); 

Répondre

1

Votre méthode onTouch a deux paramètres, le premier est la vue qui a été touchée.

Ce faisant un view.getId() simple serait vous retourner le même identifiant que vous définissez avec

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

et c'est la valeur entière de l'ArrayList

+0

you rock merci – pewpew

0

Essayez ce code dans votre carte où cliquant sur le chèque boîte une nouvelle liste de tableau que vous devez créer et ajouter la position ou la valeur du titulaire dans la liste de tableau ainsi vous pouvez savoir les quels sont les éléments sont en cours de vérification

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 
 
       } 
 

 
      } 
 
     });