@Override public int getItemPosition(Object object) { SurespotLog.v(TAG, "getItemPosition, object: " + object.getClass().getName()); if (object instanceof FriendFragment) { SurespotLog.v(TAG, "getItemPosition, returning 0"); return 0; } ChatFragment chatFragment = (ChatFragment) object; String user = chatFragment.getTheirUsername(); int index = getFriendIndex(user); if (index == -1) { SurespotLog.v(TAG, "getItemPosition, returning POSITION_NONE for: " + user); return POSITION_NONE; } else { SurespotLog.v(TAG, "getItemPosition, returning " + (index + 1) + " for: " + user); return index + 1; } }
@Override public Fragment getItem(int i) { SurespotLog.v(TAG, "getItem, I: " + i); if (i == 0) { FriendFragment ff = FriendFragment.newInstance(mOurUSername); SurespotLog.v(TAG, "created new friend fragment: " + ff); // ff.setRetainInstance(true); return ff; } else { String name = mChatFriends.get(i - 1).getName(); ChatFragment cf = ChatFragment.newInstance(mOurUSername, name); SurespotLog.v(TAG, "created new chat fragment: " + cf); // cf.setRetainInstance(true); return cf; } }
private synchronized int getFriendIndex(String username) { ListIterator<Friend> iterator = mChatFriends.listIterator(); while (iterator.hasNext()) { if (iterator.next().getName().equals(username)) { int index = iterator.previousIndex(); SurespotLog.v(TAG, "friend index for %s: %d", username, index); return index; } } return -1; }