2016-11-13 3 views
0

Я могу проверить несколько флажков, также я могу снять флажок, прежде чем нажимать кнопку.
У меня есть таблица, в которую я вставляю свой щелчок.
Проблема в том, что тот, который я снимаю, также вставлен.
Это мой код:Добавить check CheckBox в Array, удалить непроверенный из Array

public class InscriptionAssuranceRemorqueur extends AppCompatActivity implements AdapterView.OnItemClickListener, View.OnClickListener { 

public static ArrayList<Assurance> assuranceArray = new ArrayList<Assurance>(); 
private ListView list_assurance; 
private Button btn_confirmation; 
private CheckBox checkbox; 

private double largeur; 
private double longueur; 
private double poids; 
private String nom; 
private String mail; 
private String tel; 
private String mdp; 
private TextView txt; 
ArrayList<Assurance> tab = new ArrayList<Assurance>(); 
private CheckBox chkIos; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.fen_inscription_assurance_remorqueur); 

    //Intent 
    Intent x = this.getIntent(); 
    nom = x.getExtras().getString("nomCompagnie"); 
    mail = x.getExtras().getString("mail"); 
    tel = x.getExtras().getString("tel"); 
    mdp = x.getExtras().getString("mdp"); 
    String largeur = x.getExtras().getString("largeur"); 
    String longueur = x.getExtras().getString("longueur"); 
    String poids = x.getExtras().getString("poids"); 
    this.largeur = Double.parseDouble(largeur); 
    this.longueur = Double.parseDouble(longueur); 
    this.poids = Double.parseDouble(poids); 


    //remplir le tab des compagnies d'assurance 
    assuranceArray.add(new Assurance("[email protected]","GAT")); 
    assuranceArray.add(new Assurance("[email protected]","STAR")); 
    assuranceArray.add(new Assurance("[email protected]","Comar")); 
    assuranceArray.add(new Assurance("[email protected]","Ctama")); 

    //Récupération 

    list_assurance = (ListView)findViewById(R.id.list_assurance); 
    btn_confirmation = (Button)findViewById(R.id.btn_cfrm_as_rm); 

    //Adapter 
    MonAdapter adapter = new MonAdapter(this,assuranceArray); 
    list_assurance.setAdapter(adapter); 
    list_assurance.setOnItemClickListener(this); 

    ArrayList<String> selectedStrings = new ArrayList<String>(); 

    //Ecouteurs 

    btn_confirmation.setOnClickListener(this); 


} 

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


    // When clicked, show a toast with the TextView text 
    Assurance a = (Assurance) parent.getItemAtPosition(position); 
    Toast.makeText(getApplicationContext(), 
      "Clicked on Row: " + a.getNomCompagnie(), 
      Toast.LENGTH_LONG).show(); 


} 

@Override 
public void onClick(View v) { 
    int i=0,j=0; 
    Boolean test=true; 

    if(v==btn_confirmation) 
    { 


     while (j<assuranceArray.size()) 
     { 
      Log.d("test",assuranceArray.get(j).getNomCompagnie()+" "+j); 
      j++; 

     } 
    }} 



public void itemClicked(View v) { 
    //code to check if this checkbox is checked! 
    int i=0; 



    CheckBox checkBox = (CheckBox)v; 

    assuranceArray.add(new Assurance ("email",checkBox.getText().toString())); 
    } 



} 

Как сделать?

+0

Я только что обновили мой вопрос –

+0

Вы пробовали настройки клик обработчиков событий для галочки? https://developer.android.com/guide/topics/ui/controls/checkbox.html –

+0

Да, моя проблема заключается в удалении элемента из массива, если вы не уверены. –

ответ

2

У вас есть 2 проблемы.

  • Вы никогда не проверять состояние флажок (проверено или нет)
  • Вы всегда добавить элемент assuranceArray на вид мыши. Вы должны добавить его, только если флажок установлен. Удалите элемент из массива, если он не установлен.

Таким образом, вы будете иметь что-то вроде:

if (checkbox.isChecked()) { 
    assuranceArray.add(new Assurance("email",checkBox.getText().toString())); 
} else { 
    for (Assurance assurance : assuranceArray) { 
     if (assurance.getEmail().equals(checkBox.getText().toString()) { 
      assuranceArray.remove(assurance); 
      //You can exit the loop as you find a reference 
      break; 
     } 
    } 
} 
+0

Это будет мой тест, если он проверен: «if (checkBox.isChecked())», а если нет? –

+0

Как я могу ссылаться на этот объект –

+0

Я обновил ответ. Вы должны зацикливать массив. если вы найдете объект подтверждения с тем же именем, а затем удалите его. – HelloSadness