package io.github.droidkaigi.confsched.fragment; import android.content.Context; import android.os.Bundle; import android.support.annotation.Nullable; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.google.android.flexbox.FlexboxLayout; import javax.inject.Inject; import io.github.droidkaigi.confsched.R; import io.github.droidkaigi.confsched.databinding.FragmentSponsorsBinding; import io.github.droidkaigi.confsched.model.Sponsor; import io.github.droidkaigi.confsched.util.AnalyticsTracker; import io.github.droidkaigi.confsched.util.AppUtil; import io.github.droidkaigi.confsched.widget.SponsorImageView; import rx.Observable; public class SponsorsFragment extends BaseFragment { private FragmentSponsorsBinding binding; @Inject AnalyticsTracker analyticsTracker; public static SponsorsFragment newInstance() { return new SponsorsFragment(); } @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { binding = FragmentSponsorsBinding.inflate(inflater, container, false); initView(); return binding.getRoot(); } @Override public void onAttach(Context context) { super.onAttach(context); getComponent().inject(this); } private void initView() { Observable.from(Sponsor.createPlatinumList()) .forEach(sponsor -> addView(sponsor, binding.platinumContainer)); Observable.from(Sponsor.createVideoList()) .forEach(sponsor -> addView(sponsor, binding.videoContainer)); Observable.from(Sponsor.createFoodsList()) .forEach(sponsor -> addView(sponsor, binding.foodsContainer)); Observable.from(Sponsor.createNormalList()) .forEach(sponsor -> addView(sponsor, binding.normalContainer)); } private void addView(Sponsor sponsor, FlexboxLayout container) { SponsorImageView imageView = new SponsorImageView(getActivity()); imageView.bindData(sponsor, v -> { if (TextUtils.isEmpty(sponsor.url)) return; analyticsTracker.sendEvent("sponsor", sponsor.url); AppUtil.showWebPage(getActivity(), sponsor.url); }); FlexboxLayout.LayoutParams params = new FlexboxLayout.LayoutParams( FlexboxLayout.LayoutParams.WRAP_CONTENT, FlexboxLayout.LayoutParams.WRAP_CONTENT); int margin = (int) getResources().getDimension(R.dimen.spacing_small); params.setMargins(margin, margin, 0, 0); container.addView(imageView, params); } }