【问题标题】:Android ListView strikethrough textAndroid ListView 删除线文本
【发布时间】:2011-10-19 10:02:08
【问题描述】:

我在 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

     }      
 }

【问题讨论】:

    标签: android database listview strikethrough


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-06-25
      • 1970-01-01
      • 2019-12-21
      • 1970-01-01
      • 1970-01-01
      • 2016-10-01
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多