[英]Android ListView strikethrough text
我正在用Android制作购物清单,为此我将产品存储在SQLite数据库中。
产品是可点击的,因此它们应获得删除线。 更新数据库工作正常,但删除线未在正确的项目上进行。 / ** *从数据库加载列表,将数据放入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
}
}
ListView的子View只是当时可见的那些项目,而不是整个项目数组。
您不必像这样迭代它们,需要从Adapter.getView()
实现中设置删除线属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.