1

アクティビティの作成時に、ListView の項目に SpannableString を設定します。
私は次のように書きます。

    doListlist=(ListView)findViewById(R.id.dolist_List);
    listsDbAdapter=new yueDataBaseAdapter(this);
    listsDbAdapter.open();
    UpdataAdpter();

    for(int i = 0; i < doListlist.getChildCount(); i++) {  
        if (listsDbAdapter.fetchData(tableName, i+1).getString(7).length() == 4) {

          View view = doListlist.getChildAt(i);  

          String drawText=listsDbAdapter.fetchData(tableName,i+1).getString(1);

          TextView txtInfo =(TextView)view.findViewById(R.id.doList_itemname);

          SpannableString ss = new SpannableString(drawText); 
          ss.setSpan(new StrikethroughSpan(), 0, drawText.length(),  Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
          txtInfo.setText(ss);
        }
    }

    public void UpdataAdpter(){
    Cursor cur= listsDbAdapter.fetchAllData(tableName);
    if(cur!=null&& cur.getCount()>=0){
        adapter =new SimpleCursorAdapter(this,
                R.layout.dolist_item,
                cur,
                new String[]{yueDataBaseAdapter.KEY_NAME,yueDataBaseAdapter.KEY_PRICESTR,yueDataBaseAdapter.KEY_NUMSTR},
                new int[]{R.id.doList_itemname,R.id.doList_itemPrice,R.id.doList_itemNum}
        );

        doListlist.setAdapter(adapter);
    }
}

しかし、doListlist.getChildCount() は常に = 0 であることがわかり
ました。質問はどこですか? または、これを行うための他のより良い方法はありますか?

4

2 に答える 2

0

これをチェックしてください:

getChildCount()はListViewで0を返します

それは私のために働いた。お役に立てば幸いです

于 2013-03-06T10:46:43.017 に答える
0

リストのアダプターをまだ設定していないためです。行う

doListlit.setAdapter(listsDbAdapter);

まず、呼び出す前にgetChildCount

于 2011-11-13T14:51:02.083 に答える