2011-10-19 63 views
0

我正在Android中执行购物清单,为此我将产品存储在SQLite数据库中。Android ListView删除线文本

该产品是可点击的,以便他们应该删除删除线。更新数据库工作正常,但删除线不在正确的项目上。 /** * 从加载数据库列表,将数据放入ListView和打击通过非活动产品 */

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 

    }  
} 

回答

1

ListView控件的子视图只这在当时是可见的那些项目,整个项目的数组。

您不需要像这样迭代它们,您需要从Adapter.getView()实现中设置去除属性。