package com.jdroid.android.firebase.remoteconfig; import android.os.Bundle; import android.support.v4.util.Pair; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.TextView; import com.jdroid.android.application.AbstractApplication; import com.jdroid.android.debug.PairItemRecyclerViewType; import com.jdroid.android.recycler.AbstractRecyclerFragment; import com.jdroid.android.recycler.RecyclerViewAdapter; import com.jdroid.android.recycler.RecyclerViewType; import com.jdroid.java.collections.Lists; import com.jdroid.java.date.DateUtils; import java.util.Date; import java.util.List; public class FirebaseRemoteConfigFragment extends AbstractRecyclerFragment { @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); List<Object> items = Lists.newArrayList(); items.add(""); for(RemoteConfigParameter each: AbstractApplication.get().getRemoteConfigParameters()) { items.add(new Pair<String, Object>(each.getKey(), FirebaseRemoteConfigHelper.getString(each))); } List<RecyclerViewType> recyclerViewTypes = Lists.<RecyclerViewType>newArrayList(new HeaderRecyclerViewType(), new PairItemRecyclerViewType() { @Override public AbstractRecyclerFragment getAbstractRecyclerFragment() { return FirebaseRemoteConfigFragment.this; } }); setAdapter(new RecyclerViewAdapter(recyclerViewTypes, items)); } public class HeaderRecyclerViewType extends RecyclerViewType<String, HeaderViewHolder> { @Override protected Integer getLayoutResourceId() { return R.layout.jdroid_firebase_remote_config_header; } @Override protected Class<String> getItemClass() { return String.class; } @Override public RecyclerView.ViewHolder createViewHolderFromView(View view) { HeaderViewHolder viewHolder = new HeaderViewHolder(view); viewHolder.fetchTimeMillis = findView(view, R.id.fetchTimeMillis); viewHolder.lastFetchStatus = findView(view, R.id.lastFetchStatus); viewHolder.fetch = findView(view, R.id.fetch); return viewHolder; } @Override public void fillHolderFromItem(String item, HeaderViewHolder holder) { holder.fetch.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { FirebaseRemoteConfigHelper.fetchNow(); } }); String fetchDate = DateUtils.formatDateTime(new Date(FirebaseRemoteConfigHelper.getFirebaseRemoteConfig().getInfo().getFetchTimeMillis())); holder.fetchTimeMillis.setText("Fetch Date: " + fetchDate); holder.lastFetchStatus.setText("Last Fetch Status: " + FirebaseRemoteConfigHelper.getFirebaseRemoteConfig().getInfo().getLastFetchStatus()); } @Override public AbstractRecyclerFragment getAbstractRecyclerFragment() { return FirebaseRemoteConfigFragment.this; } } public static class HeaderViewHolder extends RecyclerView.ViewHolder { public TextView fetchTimeMillis; public TextView lastFetchStatus; public TextView fetch; public HeaderViewHolder(View itemView) { super(itemView); } } }