use of im.actor.sdk.view.adapters.RecyclerListView in project actor-platform by actorapp.
the class CallFragment method onCreateView.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
this.callId = getArguments().getLong("call_id");
this.call = messenger().getCall(callId);
if (call == null) {
this.peer = Peer.user(myUid());
} else {
this.peer = call.getPeer();
}
manager = (NotificationManager) getActivity().getSystemService(Context.NOTIFICATION_SERVICE);
FrameLayout cont = (FrameLayout) inflater.inflate(R.layout.fragment_call, container, false);
v = (Vibrator) getActivity().getSystemService(Context.VIBRATOR_SERVICE);
CallBackgroundAvatarView backgroundAvatarView = (CallBackgroundAvatarView) cont.findViewById(R.id.background);
// animator = new CallAvatarLayerAnimator(cont.findViewById(R.id.layer),
// cont.findViewById(R.id.layer1),
// cont.findViewById(R.id.layer2),
// cont.findViewById(R.id.layer3),
// cont.findViewById(R.id.layer4)
// );
layer1 = cont.findViewById(R.id.layer1);
layer2 = cont.findViewById(R.id.layer2);
layer3 = cont.findViewById(R.id.layer3);
avatarLayers = new View[] { // cont.findViewById(R.id.layer),
layer1, layer2, layer3 };
for (int i = 0; i < avatarLayers.length; i++) {
View layer = avatarLayers[i];
((GradientDrawable) layer.getBackground()).setColor(Color.WHITE);
((GradientDrawable) layer.getBackground()).setAlpha(50);
}
endCallContainer = cont.findViewById(R.id.end_call_container);
answerContainer = cont.findViewById(R.id.answer_container);
ImageButton answer = (ImageButton) cont.findViewById(R.id.answer);
answer.setOnClickListener(v1 -> onAnswer());
ImageButton notAnswer = (ImageButton) cont.findViewById(R.id.notAnswer);
endCall = (ImageButton) cont.findViewById(R.id.end_call);
notAnswer.setOnClickListener(v1 -> doEndCall());
endCall.setOnClickListener(v1 -> doEndCall());
//
//Avatar/Name bind
//
avatarView = (AvatarView) cont.findViewById(R.id.avatar);
avatarView.init(Screen.dp(130), 50);
nameTV = (TextView) cont.findViewById(R.id.name);
nameTV.setTextColor(ActorSDK.sharedActor().style.getProfileTitleColor());
if (peer.getPeerType() == PeerType.PRIVATE) {
UserVM user = users().get(peer.getPeerId());
avatarView.bind(user);
backgroundAvatarView.bind(user);
bind(nameTV, user.getName());
} else if (peer.getPeerType() == PeerType.GROUP) {
GroupVM g = groups().get(peer.getPeerId());
avatarView.bind(g);
backgroundAvatarView.bind(g);
bind(nameTV, g.getName());
}
nameTV.setSelected(true);
//
// Members list
//
membersList = (RecyclerListView) cont.findViewById(R.id.members_list);
if (call != null) {
CallMembersAdapter membersAdapter = new CallMembersAdapter(getActivity(), call.getMembers());
membersList.setAdapter(membersAdapter);
}
//
// Members list/ avatar switch
//
View.OnClickListener listener = v1 -> switchAvatarMembers();
avatarView.setOnClickListener(listener);
// cont.findViewById(R.id.background).setOnClickListener(listener);
membersList.setOnItemClickListener((parent, view, position, id) -> switchAvatarMembers());
statusTV = (TextView) cont.findViewById(R.id.status);
//
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.VIBRATE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.MODIFY_AUDIO_SETTINGS) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.WAKE_LOCK) != PackageManager.PERMISSION_GRANTED) {
Log.d("Permissions", "call - no permission :c");
CallFragment.this.requestPermissions(new String[] { Manifest.permission.RECORD_AUDIO, Manifest.permission.CAMERA, Manifest.permission.VIBRATE, Manifest.permission.MODIFY_AUDIO_SETTINGS, Manifest.permission.WAKE_LOCK }, PERMISSIONS_REQUEST_FOR_CALL);
}
audioManager = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
audioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL);
speaker = (TintImageView) cont.findViewById(R.id.speaker);
speaker.setResource(R.drawable.ic_volume_up_white_24dp);
speakerTV = (TextView) cont.findViewById(R.id.speaker_tv);
cont.findViewById(R.id.speaker_btn).setOnClickListener(v1 -> toggleSpeaker(speaker, speakerTV));
checkSpeaker(speaker, speakerTV);
muteCall = (TintImageView) cont.findViewById(R.id.mute);
muteCallTv = (TextView) cont.findViewById(R.id.mute_tv);
muteCall.setResource(R.drawable.ic_mic_off_white_24dp);
cont.findViewById(R.id.mute_btn).setOnClickListener(v1 -> messenger().toggleCallMute(callId));
videoIcon = (TintImageView) cont.findViewById(R.id.video);
videoIcon.setResource(R.drawable.ic_videocam_white_24dp);
videoTv = (TextView) cont.findViewById(R.id.video_tv);
videoTv.setTextColor(getResources().getColor(R.color.picker_grey));
videoIcon.setTint(getResources().getColor(R.color.picker_grey));
cont.findViewById(R.id.video_btn).setOnClickListener(v1 -> messenger().toggleVideoEnabled(callId));
final TintImageView back = (TintImageView) cont.findViewById(R.id.back);
back.setResource(R.drawable.ic_message_white_24dp);
cont.findViewById(R.id.back_btn).setOnClickListener(v1 -> getActivity().startActivity(Intents.openDialog(peer, false, getActivity())));
final TintImageView add = (TintImageView) cont.findViewById(R.id.add);
add.setResource(R.drawable.ic_person_add_white_24dp);
TextView addTv = (TextView) cont.findViewById(R.id.add_user_tv);
addTv.setTextColor(getResources().getColor(R.color.picker_grey));
add.setTint(getResources().getColor(R.color.picker_grey));
if (peer.getPeerType() == PeerType.PRIVATE) {
eglContext = EglBase.create();
remoteVideoView = (SurfaceViewRenderer) cont.findViewById(R.id.remote_renderer);
localVideoView = new SurfaceViewRenderer(getActivity()) {
private boolean aspectFixed = false;
@Override
public void renderFrame(VideoRenderer.I420Frame frame) {
if (!aspectFixed) {
aspectFixed = true;
int maxWH = Screen.getWidth() / 3 - Screen.dp(20);
float scale = Math.min(maxWH / (float) frame.width, maxWH / (float) frame.height);
int destW = (int) (scale * frame.width);
int destH = (int) (scale * frame.height);
boolean turned = frame.rotationDegree % 90 % 2 == 0;
localVideoView.post(new Runnable() {
@Override
public void run() {
localVideoView.getLayoutParams().height = turned ? destW : destH;
localVideoView.getLayoutParams().width = turned ? destH : destW;
}
});
}
super.renderFrame(frame);
}
};
localVideoView.setVisibility(View.INVISIBLE);
localVideoView.setZOrderMediaOverlay(true);
localVideoView.setOnTouchListener((v1, event) -> {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
dX = localVideoView.getX() - event.getRawX();
dY = localVideoView.getY() - event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
localVideoView.animate().x(event.getRawX() + dX).y(event.getRawY() + dY).setDuration(0).start();
default:
return false;
}
return true;
});
int margin = Screen.dp(20);
int localVideoWidth = Screen.getWidth() / 3 - margin;
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(localVideoWidth, Math.round(localVideoWidth / 1.5f), Gravity.TOP | Gravity.LEFT);
int statusBarHeight = 0;
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
statusBarHeight = getResources().getDimensionPixelSize(resourceId);
}
params.setMargins(margin, margin + statusBarHeight, 0, 0);
cont.addView(localVideoView, params);
} else {
if (call != null) {
if (call.getIsVideoEnabled().get()) {
messenger().toggleVideoEnabled(callId);
}
}
}
return cont;
}
use of im.actor.sdk.view.adapters.RecyclerListView in project actor-platform by actorapp.
the class MembersFragment method onCreateView.
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View res = inflater.inflate(R.layout.fragment_members, container, false);
int groupId = getArguments().getInt("groupId");
adapter = new MembersAdapter(getContext(), groupId);
GroupVM groupVM = groups().get(groupId);
RecyclerListView list = (RecyclerListView) res.findViewById(R.id.items);
Boolean canInvite = groupVM.getIsCanInviteMembers().get();
Boolean canInviteViaLink = groupVM.getIsCanInviteViaLink().get();
if (canInvite || canInviteViaLink) {
LinearLayout header = new LinearLayout(getActivity());
list.addHeaderView(header);
if (canInvite) {
TextView addMmemberTV = new TextView(getContext());
addMmemberTV.setBackgroundResource(R.drawable.selector);
addMmemberTV.setTextSize(16);
addMmemberTV.setPadding(Screen.dp(72), 0, 0, 0);
addMmemberTV.setGravity(Gravity.CENTER_VERTICAL);
addMmemberTV.setText(groupVM.getGroupType() == GroupType.CHANNEL ? R.string.channel_add_member : R.string.group_add_member);
addMmemberTV.setTextColor(ActorSDK.sharedActor().style.getTextPrimaryColor());
addMmemberTV.setOnClickListener(view -> {
startActivity(new Intent(getActivity(), AddMemberActivity.class).putExtra(Intents.EXTRA_GROUP_ID, groupId));
});
header.addView(addMmemberTV, ViewGroup.LayoutParams.MATCH_PARENT, Screen.dp(58));
}
if (canInvite && canInviteViaLink) {
header.addView(new DividerView(getActivity()), ViewGroup.LayoutParams.MATCH_PARENT, 1);
}
if (canInviteViaLink) {
TextView shareLinkTV = new TextView(getContext());
shareLinkTV.setBackgroundResource(R.drawable.selector);
shareLinkTV.setTextSize(16);
shareLinkTV.setPadding(Screen.dp(72), 0, 0, 0);
shareLinkTV.setGravity(Gravity.CENTER_VERTICAL);
shareLinkTV.setTextColor(ActorSDK.sharedActor().style.getTextPrimaryColor());
shareLinkTV.setText(R.string.invite_link_action_share);
shareLinkTV.setOnClickListener(view -> Intents.inviteLink(groupId, getActivity()));
header.addView(shareLinkTV, ViewGroup.LayoutParams.MATCH_PARENT, Screen.dp(58));
}
}
footer = new LinearLayout(getActivity());
footer.setVisibility(View.INVISIBLE);
list.addFooterView(footer);
CircularProgressBar botProgressView = new CircularProgressBar(getActivity());
int padding = Screen.dp(16);
botProgressView.setPadding(padding, padding, padding, padding);
botProgressView.setIndeterminate(true);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(Screen.dp(72), Screen.dp(72));
params.gravity = Gravity.CENTER;
FrameLayout cont = new FrameLayout(getActivity());
cont.addView(botProgressView, params);
footer.addView(cont, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
list.setAdapter(adapter);
list.setOnItemClickListener((parent, view, position, id) -> {
Object item = parent.getItemAtPosition(position);
if (item != null && item instanceof GroupMember) {
GroupMember groupMember = (GroupMember) item;
if (groupMember.getUid() != myUid()) {
UserVM userVM = users().get(groupMember.getUid());
if (userVM != null) {
startActivity(Intents.openPrivateDialog(userVM.getId(), true, getActivity()));
}
}
}
});
list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
Object item = adapterView.getItemAtPosition(i);
if (item != null && item instanceof GroupMember) {
GroupMember groupMember = (GroupMember) item;
if (groupMember.getUid() != myUid()) {
UserVM userVM = users().get(groupMember.getUid());
if (userVM != null) {
adapter.onMemberClick(groupVM, userVM, groupMember.isAdministrator(), groupMember.getInviterUid() == myUid(), (BaseActivity) getActivity());
return true;
}
}
}
return false;
}
});
progressView = (CircularProgressBar) res.findViewById(R.id.loadingProgress);
progressView.setIndeterminate(true);
return res;
}
use of im.actor.sdk.view.adapters.RecyclerListView in project actor-platform by actorapp.
the class InviteFragment method onCreateView.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View res = inflater.inflate(R.layout.fragment_list, container, false);
res.findViewById(R.id.listView).setBackgroundColor(ActorSDK.sharedActor().style.getMainBackgroundColor());
emptyText = (TextView) res.findViewById(R.id.emptyView);
emptyText.setTextColor(ActorSDK.sharedActor().style.getTextSecondaryColor());
emptyText.setText(R.string.progress_common);
collection = (RecyclerListView) res.findViewById(R.id.listView);
AndroidPhoneBook phoneBookLoader = new AndroidPhoneBook();
phoneBookLoader.useDelay(false);
res.setBackgroundColor(ActorSDK.sharedActor().style.getMainBackgroundColor());
phoneBookLoader.loadPhoneBook(contacts -> {
if (contacts.size() > 0) {
getActivity().runOnUiThread(() -> {
InviteFragment.this.contacts = contacts;
adapter = new InviteAdapter(getActivity(), contacts, new OnItemClickedListener<PhoneBookContact>() {
@Override
public void onClicked(PhoneBookContact item) {
onItemClicked(item);
}
@Override
public boolean onLongClicked(PhoneBookContact item) {
return false;
}
});
collection.setAdapter(adapter);
hideView(emptyText);
showView(collection);
showMenu();
});
}
});
return res;
}
use of im.actor.sdk.view.adapters.RecyclerListView in project actor-platform by actorapp.
the class GroupInfoFragment method onCreateView.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
chatId = getArguments().getInt(EXTRA_CHAT_ID);
groupVM = groups().get(chatId);
View res = inflater.inflate(R.layout.fragment_group, container, false);
listView = (RecyclerListView) res.findViewById(R.id.groupList);
notMemberView = res.findViewById(R.id.notMember);
res.setBackgroundColor(style.getMainBackgroundColor());
// listView.setBackgroundColor(style.getMainBackgroundColor());
notMemberView.setBackgroundColor(style.getMainBackgroundColor());
((TextView) notMemberView.findViewById(R.id.not_member_text)).setTextColor(style.getTextPrimaryColor());
//
// Header
//
// Views
View header = inflater.inflate(R.layout.fragment_group_header, listView, false);
TextView title = (TextView) header.findViewById(R.id.title);
TextView subtitle = (TextView) header.findViewById(R.id.subtitle);
avatarView = (AvatarView) header.findViewById(R.id.avatar);
avatarView.init(Screen.dp(48), 22);
TextView aboutTV = (TextView) header.findViewById(R.id.about);
View shortNameCont = header.findViewById(R.id.shortNameContainer);
TextView shortNameView = (TextView) header.findViewById(R.id.shortName);
TextView shortLinkView = (TextView) header.findViewById(R.id.shortNameLink);
TextView addMember = (TextView) header.findViewById(R.id.addMemberAction);
addMember.setText(groupVM.getGroupType() == GroupType.CHANNEL ? R.string.channel_add_member : R.string.group_add_member);
TextView members = (TextView) header.findViewById(R.id.viewMembersAction);
TextView leaveAction = (TextView) header.findViewById(R.id.leaveAction);
TextView administrationAction = (TextView) header.findViewById(R.id.administrationAction);
View descriptionContainer = header.findViewById(R.id.descriptionContainer);
SwitchCompat isNotificationsEnabled = (SwitchCompat) header.findViewById(R.id.enableNotifications);
// Styling
// ((TextView) header.findViewById(R.id.about_hint)).setTextColor(style.getTextSecondaryColor());
header.setBackgroundColor(style.getMainBackgroundColor());
header.findViewById(R.id.avatarContainer).setBackgroundColor(style.getToolBarColor());
title.setTextColor(style.getProfileTitleColor());
subtitle.setTextColor(style.getProfileSubtitleColor());
aboutTV.setTextColor(style.getTextPrimaryColor());
shortNameView.setTextColor(style.getTextPrimaryColor());
shortLinkView.setTextColor(style.getTextSecondaryColor());
// settingsHeaderText.setTextColor(style.getSettingsCategoryTextColor());
((TintImageView) header.findViewById(R.id.settings_notification_icon)).setTint(style.getSettingsIconColor());
((TintImageView) header.findViewById(R.id.settings_about_icon)).setTint(style.getSettingsIconColor());
((TextView) header.findViewById(R.id.settings_notifications_title)).setTextColor(style.getTextPrimaryColor());
((TextView) header.findViewById(R.id.addMemberAction)).setTextColor(style.getTextPrimaryColor());
members.setTextColor(style.getTextPrimaryColor());
administrationAction.setTextColor(style.getTextPrimaryColor());
leaveAction.setTextColor(style.getTextDangerColor());
if (groupVM.getGroupType() == GroupType.CHANNEL) {
leaveAction.setText(R.string.group_leave_channel);
} else {
leaveAction.setText(R.string.group_leave);
}
header.findViewById(R.id.after_settings_divider).setBackgroundColor(style.getBackyardBackgroundColor());
//
// Header
//
avatarView.bind(groupVM.getAvatar().get(), groupVM.getName().get(), groupVM.getId());
avatarView.setOnClickListener(view -> {
if (groupVM.getAvatar().get() != null) {
startActivity(ViewAvatarActivity.viewGroupAvatar(chatId, getActivity()));
}
});
bind(groupVM.getName(), name -> {
title.setText(name);
});
bind(groupVM.getMembersCount(), val -> {
subtitle.setText(messenger().getFormatter().formatGroupMembers(val));
});
// About
bind(groupVM.getAbout(), (about) -> {
aboutTV.setText(about);
aboutTV.setVisibility(about != null ? View.VISIBLE : View.GONE);
});
bind(groupVM.getShortName(), shortName -> {
if (shortName != null) {
shortNameView.setText("@" + shortName);
String prefix = ActorSDK.sharedActor().getGroupInvitePrefix();
if (prefix != null) {
shortLinkView.setText(prefix + shortName);
shortLinkView.setVisibility(View.VISIBLE);
} else {
shortLinkView.setVisibility(View.GONE);
}
}
shortNameCont.setVisibility(shortName != null ? View.VISIBLE : View.GONE);
});
final ClipboardManager clipboard = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
shortNameCont.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String link = shortLinkView.getText().toString();
clipboard.setPrimaryClip(ClipData.newPlainText(null, (link.contains("://") ? "" : "https://") + link));
Toast.makeText(getActivity(), getString(R.string.invite_link_copied), Toast.LENGTH_SHORT).show();
}
});
bind(groupVM.getAbout(), groupVM.getShortName(), (about, shortName) -> {
descriptionContainer.setVisibility(about != null || shortName != null ? View.VISIBLE : View.GONE);
});
// Notifications
isNotificationsEnabled.setChecked(messenger().isNotificationsEnabled(Peer.group(chatId)));
isNotificationsEnabled.setOnCheckedChangeListener((buttonView, isChecked) -> {
messenger().changeNotificationsEnabled(Peer.group(chatId), isChecked);
});
header.findViewById(R.id.notificationsCont).setOnClickListener(v -> {
isNotificationsEnabled.setChecked(!isNotificationsEnabled.isChecked());
});
// Add Member
bind(groupVM.getIsCanInviteMembers(), (canInvite) -> {
if (canInvite) {
addMember.setVisibility(View.VISIBLE);
} else {
addMember.setVisibility(View.GONE);
}
});
addMember.setOnClickListener(view -> {
startActivity(new Intent(getActivity(), AddMemberActivity.class).putExtra(Intents.EXTRA_GROUP_ID, chatId));
});
// Administration
if (groupVM.getIsCanEditAdministration().get() || groupVM.getIsCanDelete().get()) {
administrationAction.setOnClickListener(view -> {
startActivity(new Intent(getActivity(), GroupAdminActivity.class).putExtra(Intents.EXTRA_GROUP_ID, chatId));
});
} else {
administrationAction.setVisibility(View.GONE);
}
// Async Members
// Showing member only when members available and async members is enabled
bind(groupVM.getIsCanViewMembers(), groupVM.getIsAsyncMembers(), (canViewMembers, vm1, isAsync, vm2) -> {
if (canViewMembers) {
if (isAsync) {
members.setVisibility(View.VISIBLE);
header.findViewById(R.id.after_settings_divider).setVisibility(View.GONE);
} else {
members.setVisibility(View.GONE);
header.findViewById(R.id.after_settings_divider).setVisibility(View.VISIBLE);
}
} else {
members.setVisibility(View.GONE);
header.findViewById(R.id.after_settings_divider).setVisibility(View.GONE);
}
});
members.setOnClickListener(view -> {
startActivity(new Intent(getContext(), MembersActivity.class).putExtra(Intents.EXTRA_GROUP_ID, groupVM.getId()));
});
// Leave
bind(groupVM.getIsCanLeave(), canLeave -> {
if (canLeave) {
leaveAction.setVisibility(View.VISIBLE);
leaveAction.setOnClickListener(view1 -> {
new AlertDialog.Builder(getActivity()).setMessage(getString(groupVM.getGroupType() == GroupType.CHANNEL ? R.string.alert_leave_channel_message : R.string.alert_leave_group_message).replace("%1$s", groupVM.getName().get())).setPositiveButton(R.string.alert_leave_group_yes, (dialog2, which) -> {
execute(messenger().leaveAndDeleteGroup(chatId).then(aVoid -> ActorSDK.returnToRoot(getActivity())));
}).setNegativeButton(R.string.dialog_cancel, null).show().setCanceledOnTouchOutside(true);
});
} else {
leaveAction.setVisibility(View.GONE);
}
});
listView.addHeaderView(header, null, false);
//
// Members
//
groupUserAdapter = new MembersAdapter(getActivity(), getArguments().getInt("groupId"));
listView.setAdapter(groupUserAdapter);
listView.setOnItemClickListener((parent, view, position, id) -> {
Object item = parent.getItemAtPosition(position);
if (item != null && item instanceof GroupMember) {
GroupMember groupMember = (GroupMember) item;
if (groupMember.getUid() != myUid()) {
UserVM userVM = users().get(groupMember.getUid());
if (userVM != null) {
startActivity(Intents.openPrivateDialog(userVM.getId(), true, getActivity()));
}
}
}
});
listView.setOnItemLongClickListener((adapterView, view, i, l) -> {
Object item = adapterView.getItemAtPosition(i);
if (item != null && item instanceof GroupMember) {
GroupMember groupMember = (GroupMember) item;
if (groupMember.getUid() != myUid()) {
UserVM userVM = users().get(groupMember.getUid());
if (userVM != null) {
groupUserAdapter.onMemberClick(groupVM, userVM, groupMember.isAdministrator(), groupMember.getInviterUid() == myUid(), (BaseActivity) getActivity());
return true;
}
}
}
return false;
});
//
// Scroll handling
//
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (firstVisibleItem >= 1) {
updateBar(Integer.MAX_VALUE);
} else {
View top = listView.getChildAt(0);
if (top != null) {
updateBar(-top.getTop());
} else {
updateBar(Integer.MAX_VALUE);
}
}
}
});
//
// Placeholder
//
bind(groupVM.isMember(), (isMember) -> {
notMemberView.setVisibility(isMember ? View.GONE : View.VISIBLE);
getActivity().invalidateOptionsMenu();
});
// Menu
bind(groupVM.getIsCanEditInfo(), canEditInfo -> {
getActivity().invalidateOptionsMenu();
});
return res;
}
Aggregations