Skip to content

Instantly share code, notes, and snippets.

View elsennov's full-sized avatar

Elsen Novraditya elsennov

  • Jakarta, Indonesia
View GitHub Profile
@elsennov
elsennov / removeAllChildFragments
Last active July 4, 2018 05:30
Remove all child fragments inside parent fragment (Nested fragment)
private void removeAllChildFragments() {
List<String> childFragmentTags = CHILD_FRAGMENT_TAGS_MAP.get(mParentId);
if (childFragmentTags != null && !childFragmentTags.isEmpty()) {
List<Fragment> childFragments = getChildFragmentManager().getFragments();
if (childFragments != null && !childFragments.isEmpty()) {
FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction();
for (Fragment childFragment : childFragments) {
if (childFragment != null) {
if (childFragmentTags.contains(childFragment.getTag())) {
fragmentTransaction.remove(childFragment);
@elsennov
elsennov / coroutine_example
Created July 25, 2017 02:50
Coroutine async UI
private fun applyHashtagSpanForResiNumber(fullText: String,
messageEditorSpannable: Spannable) {
launch(UI) {
var indexAsync = async(CommonPool, CoroutineStart.LAZY) {
fullText.indexOf(RESI_NUMBER, 0)
}
while (indexAsync.await() != -1) {
val hashtagSpanAsync = async(CommonPool, CoroutineStart.LAZY) {
CharacterStyle.wrap(hashtagForegroundColorSpan)
}
@elsennov
elsennov / hotline_init
Created July 22, 2017 04:19
Hotline Initialization
fun initHotline(applicationContext: Context) {
initHotlineBaseConfig(applicationContext)
initHotlineNotification(applicationContext)
initHotlineUser(applicationContext)
}
private fun initHotlineBaseConfig(applicationContext: Context) {
val hotlineConfig = HotlineConfig(BuildConfig.HOTLINE_APP_ID, BuildConfig.HOTLINE_APP_KEY)
Hotline.getInstance(applicationContext).init(hotlineConfig)
}
package com.novraditya.elsen.tablayoutexample;
import android.content.Context;
import android.graphics.Point;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.WindowManager;
/**
* Created by elsennovraditya on 3/20/16.
package io.prismapp.mobile.chat.base.dbflow.typeconverter
import com.raizlabs.android.dbflow.converter.TypeConverter
import io.prismapp.mobile.base.PrismApplication
import io.prismapp.mobile.chat.base.model.BrokerMetadata
/**
* Created by elsennovraditya on 8/24/16.
*/
class BrokerMetadataConverter : TypeConverter<String, BrokerMetadata>() {
package io.prismapp.mobile.chat.base.dbflow.typeconverter
import com.raizlabs.android.dbflow.converter.TypeConverter
import io.prismapp.mobile.base.PrismApplication
import io.prismapp.mobile.chat.base.model.BrokerMetadata
/**
* Created by elsennovraditya on 8/24/16.
*/
class BrokerMetadataConverter : TypeConverter<String, BrokerMetadata>() {
@elsennov
elsennov / Logout.java
Last active December 9, 2016 07:40
Stream concept using RxNavi and RxJava
private void initLogout() {
RxNavi.observe(naviComponent, Event.VIEW_CREATED)
.filter(viewCreated -> accountPresenter.isLoggedIn(getContext()))
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(viewCreated -> viewCreated.view()
.findViewById(R.id.account_divider_logout).setVisibility(View.VISIBLE))
.map(viewCreated -> {
View logoutButton = viewCreated.view().findViewById(R.id.account_logout);
logoutButton.setVisibility(View.VISIBLE);
return logoutButton;
package com.novraditya.elsen.espressotestrecorder;
import android.support.test.espresso.ViewInteraction;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.LargeTest;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
package com.novraditya.elsen.tablayoutexample;
import android.content.Context;
import android.support.design.widget.TabLayout;
import android.util.AttributeSet;
import java.lang.reflect.Field;
/**
* Created by elsennovraditya on 3/20/16.
@Override
public void onBackPressed() {
if (isTaskRoot()) {
startHomeActivity();
} else {
super.onBackPressed();
}
}
private void startHomeActivity() {