2011-10-19 7 views
0

Je fais une liste d'achats dans Android, pour lequel je stocke des produits dans la base de données SQLite.Android ListView barré texte

Les produits sont cliquables afin qu'ils soient barrés. La mise à jour de la base de données fonctionne correctement, mais le barré n'est pas effectué sur l'élément correct. /** * Charge la liste de DB, place les données dans Listview et les grèves dans les produits inactifs */

public void loadListe() 
{ 
//---get all titles--- 
    meineListe.clear(); 
    adapter.clear();  

    db.open(); 
    Cursor c = db.getAllTitles(); 
    ArrayList<String> strikedItems = new ArrayList<String>(); 
    strikedItems.clear(); 
    if (c.moveToFirst()) 
    { 
     do {    
      if (c.getInt(0)==1) { 
       meineListe.add(c.getString(1)); 
       strikedItems.add(c.getString(1)); 
      } 
      else meineListe.add(c.getString(1)); 
     } while (c.moveToNext()); 
    } 
    db.close();  
    //Strike Through on inactive Items 
    list = this.getListView(); 
    for (int i = 0; i < list.getChildCount(); i++) { 

    LinearLayout row = (LinearLayout) list.getChildAt(i); 
    TextView title; 
    title = (TextView) row.getChildAt(0); 
    //System.out.println("zeile "+i+ " "+title.getText()); 

    if(strikedItems.contains(title.getText())) 
    { 
     title.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG); 
     System.out.println("zeile "+i+ " Title: "+title.getText()); 
     title.setTextColor(0xFFFF0000); //black 

    }  
} 

Répondre

1

Les vues de l'enfant de la ListView ne sont que les éléments qui sont visibles à l'époque, pas l'ensemble des éléments.

Vous ne les itérez pas comme ceci, vous devez définir la propriété barrée de votre implémentation Adapter.getView().