package com.khmelenko.lab.varis.fragment;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.khmelenko.lab.varis.R;
import com.khmelenko.lab.varis.adapter.JobsListAdapter;
import com.khmelenko.lab.varis.adapter.OnListItemListener;
import com.khmelenko.lab.varis.network.response.Job;
import java.util.ArrayList;
import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
/**
* Fragment with build jobs
*
* @author Dmytro Khmelenko
*/
public class JobsFragment extends Fragment {
@Bind(R.id.jobs_recycler_view)
RecyclerView mJobsRecyclerView;
private JobsListAdapter mJobsListAdapter;
private List<Job> mJobs = new ArrayList<>();
private JobsListener mListener;
/**
* Creates new instance of the fragment
*
* @return Fragment instance
*/
public static JobsFragment newInstance() {
JobsFragment fragment = new JobsFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
public JobsFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_jobs, container, false);
ButterKnife.bind(this, view);
mJobsRecyclerView.setNestedScrollingEnabled(false);
mJobsRecyclerView.setHasFixedSize(true);
LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
mJobsRecyclerView.setLayoutManager(layoutManager);
mJobsListAdapter = new JobsListAdapter(getContext(), mJobs,
new OnListItemListener() {
@Override
public void onItemSelected(int position) {
if (mJobs != null && !mJobs.isEmpty()) {
Job job = mJobs.get(position);
mListener.onJobSelected(job);
}
}
});
mJobsRecyclerView.setAdapter(mJobsListAdapter);
DisplayMetrics metrics = getResources().getDisplayMetrics();
int itemHeight = (int)((mJobsListAdapter.getItemHeight() * metrics.density) + 0.5);
mJobsRecyclerView.getLayoutParams().height = itemHeight * mJobsListAdapter.getItemCount();
return view;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (JobsListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement JobsListener");
}
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
/**
* Sets the list of jobs
*
* @param jobs Jobs
*/
public void setJobs(List<Job> jobs) {
mJobs.clear();
mJobs.addAll(jobs);
if (mJobsListAdapter != null) {
mJobsListAdapter.notifyDataSetChanged();
}
}
/**
* Interface for communication with this fragment
*/
public interface JobsListener {
/**
* Handles job selection
*
* @param job Selected job
*/
void onJobSelected(Job job);
}
}