2011-12-06 9 views
0

私はListViewでアクティビティを持っています - "すべてクリア"と "OK"。 「すべてクリア」ボタンでは、アイテムのチェック状態をクリアします。正常に動作します。 onItemClickでアイテムをチェックインしましたonItemClick/ListView/

m_list.setItemChecked(pos, false); 

私はアイテムの状態を変更しようとしている/ <確認 - 複雑なビジネスロジックに応じて/未チェック>を。 Bussinesレイヤーは、チェックされた を2つ以上の項目について決定します。同じコードを試しています:

m_list.setItemChecked(position, bCheck); 

これは機能しません。後ろのデータは変更されず、ビューのみが変更されます。

「すべてクリア」のコード:

@Override 
public void onClick(View v) 
{ 
    if (v == m_map) 
     GoToMap(); 
    else if (v == m_clear) 
    { 
     for (int i=0; i < m_poiCategories.size();i++) 
     m_list.setItemChecked(pos, false); 
    } 
} 

このコードは動作していない:

m_list.setOnItemClickListener(new OnItemClickListener() 
    { 
    @Override 
    public void onItemClick(AdapterView<?> listView, View selectedItem, int position, long itemId) 
    { 
     boolean b = true; 
     .... 
     m_list.setItemChecked(position, b); 
    } 
}); 

答えて

3

あなたはnotifyDataSetChanged()は、UIスレッドときから呼び出されることを必要とされるよりもListView秒で作業をしている場合すべてのデータが変更されます。これにより、表示される項目の数に応じて、getView()を何度か呼び出してUIを更新します。

getView()が正しく実装されていることを確認してください。

ご覧になるために、私は非常にお勧めします:http://www.youtube.com/watch?v=wDBM6wVEO70

関連する問題