Я новичок в Android. Когда я обновляю ListView с помощью метода invalidateViews(), перестают работать события, которые подключены к ListView.setOnItemClickListener(event1), setOnItemLongClickListener(event2). ListView подключен к CursorAdapter, который предоставляет данные. В CursorAdapter.bindView данные привязываются к представлениям.
Весь код довольно большой. Я постараюсь привести наиболее важные на мой взгляд куски кода и добавить пояснения.
Добавляю еще, если события подключения в методе MainCursorAdapter.bindView(...) все работают корректно.
Спасибо за помощь.
// Data binding to ListView
protected void bindDataWithList()
{
if (checkCommunicatorWithActivity())
{
this.mainCursorAdapter = (MainCursorAdapter) this.communicatorWithActivity.getMainDataList();
this.mainCursorAdapter.setListView(lvMain);
lvMain.setAdapter(this.mainCursorAdapter);
}
}
// Create event methods
protected void createEventsListener()
{
this.lvOnItemClickListener = new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
Toast.makeText(getActivity(), "ItemClick(ListView)", Toast.LENGTH_SHORT).show();
//ListFragment.this.communicatorWithActivity.showDetailListItem(position);
}
};
this.lvOnItemLongClickListener = new AdapterView.OnItemLongClickListener()
{
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id)
{
Toast.makeText(getActivity(), "ItemLongClick(ListView)", Toast.LENGTH_SHORT).show();
if (checkMainCursorAdapter())
{
ListFragment.this.mainCursorAdapter.setShowSelected(! ListFragment.this.mainCursorAdapter.getShowSelected());
lvMain.invalidateViews();
// after this method events not works !!!
}
return true;
}
};
}
// Linking event methods
protected void bindEventsListener()
{
lvMain.setOnItemClickListener(this.lvOnItemClickListener);
lvMain.setOnItemLongClickListener(this.lvOnItemLongClickListener);
}