2012-12-17 2 views
0

J'ai fait un effort décent pour trouver une question similaire et a échoué, alors s'il vous plaît pardonnez-moi s'il s'agit d'une pollution redondante.Programmer changer listview pour qu'il soit vérifiable

J'ai un ListView et un ImageButton défini dans le fichier xml "my_layout" correspondant à mon activité comme suit:

<ListView 
    android:id="@+id/listViewItems" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    ></ListView> 

et

<ImageButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/btn_delete_dark" 
    android:id="@+id/buttonDelete" 
    android:layout_weight="1">  
</ImageButton> 

Je POPULATE alors le ListView programme dans le onCreate() méthode de mon activité comme suit:

public class ViewItemsActivity extends Implémentation implémente l'outil OnClickListener, OnItemClickListener {

ImageButton buttonDelete; 
ListView listViewItems; 
DatabaseHandler dbHandler; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.my_layout); 

    buttonDeleteQuestion = (ImageButton) findViewById(R.id.buttonDelete); 
    listViewQuestions = (ListView) findViewById(R.id.listViewItems); 
    buttonDelete.setOnClickListener(this); 

    //get data from sql table containing items 
    dbHandler = new DatabaseHandler(this); 

    String [] items = dbHandler.getItems();  //get data to populate ListView 


    CustomAdapter adapter = new CustomAdapter(this, 
       android.R.layout.simple_list_item_1, items); 
    listViewItems.setAdapter(adapter); 
    listViewItems.setOnItemClickListener(this); 
} 

@Override 
public void onClick(View v) { 

     switch (v.getId()) {   
     case R.id.buttonDelete:   
     listViewItems.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
     listViewItems.setItemChecked(0, true); 
     break; 
     //other cases are irrelevant 
     } 

} 


@Override 
public void onItemClick(AdapterView<?> parent, View v, int pos, long id) { 
    // TODO Auto-generated method stub 

    //non relevant code 
} 

}

Tout fonctionne comme il se doit, sauf que je veux ListView changer, en apparence et la fonctionnalité, à la suite de cliquer buttonDelete, afin qu'il affiche coches à droite de chaque rangée qui peut être vérifiée en cliquant sur eux. J'ai cru comprendre que setChoiceMode (ListView.MULTIPLE_CHOICE) et setItemChecked (i, true) auraient cet effet, mais il est clair que j'ai manqué quelque chose comme ce n'est pas le cas.

Je suis assez nouveau pour Android et il est donc possible que j'ai perdu le temps de quelqu'un avec des trivialités, pour lesquels je m'excuse.

Merci beaucoup.

Répondre

0

La solution est très simple, et est le suivant:

en cas onClick correspondant à buttonDelete, je simplement créé un nouvel adaptateur dont l'id mise en page est * simple_list_item_multiple_choice * et lui a attribué la ListView avec les lignes

CustomAdapter adapter = new CustomAdapter(this, 
      android.R.layout.simple_list_item_multiple_choice, items); 
listViewItems.setAdapter(adapter); 

qui a fait l'affaire.

Questions connexes