package com.gojira.ui; import android.app.Activity; import android.os.Bundle; import android.support.design.widget.Snackbar; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.devspark.progressfragment.ProgressFragment; import com.gojira.R; import com.gojira.app.GojiraApp; import com.gojira.data.api.JiraService; import com.gojira.data.io.DashboardsResponse; import com.gojira.data.model.Dashboard; import com.gojira.util.DataRecyclerAdapter; import javax.inject.Inject; import butterknife.ButterKnife; import butterknife.InjectView; import retrofit.Callback; import retrofit.RetrofitError; import retrofit.client.Response; import timber.log.Timber; /** * @author Stratos Theodorou * @version 1.0 * @since 15/05/2015 */ public class DashboardListFragment extends ProgressFragment implements Callback<DashboardsResponse> { @Inject JiraService mService; @InjectView(R.id.recycler) RecyclerView mRecycler; DashboardRecyclerAdapter mAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void onAttach(Activity activity) { super.onAttach(activity); GojiraApp.get(activity).getGraph().inject(this); mAdapter = new DashboardRecyclerAdapter(); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); setContentView(R.layout.fragment_dashboard_list); ButterKnife.inject(this, getContentView()); setEmptyText(getString(R.string.list_dashboards_empty)); mRecycler.setLayoutManager(new LinearLayoutManager(getActivity())); mRecycler.setAdapter(mAdapter); setContentShown(!mAdapter.isEmpty()); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mService.dashboards(this); } @Override public void success(DashboardsResponse data, Response response) { Timber.d("Received %s dashboards.", data.total); mAdapter.setData(data.dashboards); setContentShown(true); } @Override public void failure(RetrofitError error) { Timber.w(error, "Could not get dashboards."); Snackbar.make(getContentView(), R.string.list_dashboards_error, Snackbar.LENGTH_LONG).show(); setContentShown(true); } static class DashboardRecyclerAdapter extends DataRecyclerAdapter<Dashboard, DashboardRecyclerAdapter.ViewHolder> { @Override public DashboardRecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int position) { View view = LayoutInflater.from(parent.getContext()) .inflate(android.R.layout.simple_list_item_1, parent, false); return new DashboardRecyclerAdapter.ViewHolder(view); } @Override public void onBindViewHolder(DashboardRecyclerAdapter.ViewHolder holder, int position) { Dashboard dashboard = getItem(position); holder.text.setText(dashboard.name); } class ViewHolder extends RecyclerView.ViewHolder { @InjectView(android.R.id.text1) TextView text; public ViewHolder(View view) { super(view); ButterKnife.inject(this, view); } } } }