質問

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

m_list.setItemChecked(pos, false); 

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

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);
    }
});
役に立ちましたか?

解決

あなたが一緒に働いているなら ListViews必要なことよりも notifyDataSetChanged() データが変更されたときにUIスレッドから呼び出されます。これにより、呼び出してUIが更新されます getView() 表示されるアイテムの数に応じて、何度か。

あなたを確認してください getView() 適切に実装されています。

参照のために、表示して理解することを強くお勧めします: http://www.youtube.com/watch?v=wdbm6wveo70

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top