onitemclick /listView /でチェックされたアイテムを設定します
-
28-10-2019 - |
質問
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);
}
});
解決
あなたが一緒に働いているなら ListView
s必要なことよりも notifyDataSetChanged()
データが変更されたときにUIスレッドから呼び出されます。これにより、呼び出してUIが更新されます getView()
表示されるアイテムの数に応じて、何度か。
あなたを確認してください getView()
適切に実装されています。
参照のために、表示して理解することを強くお勧めします: http://www.youtube.com/watch?v=wdbm6wveo70
所属していません StackOverflow