0

ListView とボタンを備えたアクティビティがあります-「すべてクリア」と「OK」。「すべてクリア」ボタンで、アイテムのチェック状態をクリアします-正常に動作します。

m_list.setItemChecked(pos, false); 

onItemClick で、複雑なビジネス ロジックに応じて、アイテム/チェック済み <-> チェックなし/の状態を変更しようとしています。Bussines レイヤーは、複数の項目についてチェックするかどうかを決定します。私は同じコードを試しています:

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);
    }
});
4

1 に答える 1

3

sを使用している場合は、データが変更されたときに UI スレッドから呼び出すListView必要があります。これは、表示される項目の数に応じて、数回notifyDataSetChanged()呼び出して UI を更新します。getView()

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

参考までに、http ://www.youtube.com/watch?v=wDBM6wVEO70 を見て理解することを強くお勧めします。

于 2011-12-06T09:51:40.250 に答える