RecyclerViewのデータをバインドするためにandroid.support.v7.util.SortedListを使用しています。データを更新しようとすると、は常に-1を返します。android.support.v7.util.SortedListのバイナリ検索
private int findItem(ZoneContactLoaderAdapter mAdapter, ContactModel contactModel) {
// int index = Collections.binarySearch(mAdapter.getContactModel(), contactModel, new BinarySearchWithComparator());
return mAdapter.getContactModel().indexOf(contactModel);
}
ロジックはこのようなものです:
int position = findItem(zoneContactLoaderAdapter, notificationContactModel);
if (position < 0) {
ContactModel adapterContactModel = new ContactModel(conversationID, Constants.ACCOUNT_TYPE, conversationName, "", null, conversationName, conversationID, false);
updateAdapterModel(adapterContactModel, notificationContactModel);
zoneContactLoaderAdapter.getContactModel().add(adapterContactModel);
} else {
notificationContactModel.setIsConversation(true);
ContactModel adapterContactModel = zoneContactLoaderAdapter.getItem(position);
updateAdapterModel(adapterContactModel, notificationContactModel);
zoneContactLoaderAdapter.getContactModel().updateItemAt(position, adapterContactModel);
}
位置は常に-1を返し、データを複製します。 threadから解決策を試しましたが、それでも正常に動作しません。だから、例としてthisを使ってリスト自体にカスタムバイナリ検索を実装することを考えました。しかしコレクションはListだけを取る。
android.support.v7.util.SortedListでアイテムのインデックスを見つけるにはどうすればよいでしょうか。ありがとう