Guest User

Untitled

a guest
Oct 22nd, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.64 KB | None | 0 0
  1. public class JobAdapter extends RecyclerView.Adapter<JobAdapter.ViewHolder> implements Filterable {
  2.  
  3. private OnJobClickListener mListener;
  4. private List<Job> jobs;
  5. private List<Job> jobsListFiltered;
  6.  
  7. private static final String LOG_TAG = JobAdapter.class.getName();
  8.  
  9.  
  10. public interface OnJobClickListener {
  11. void onJobClick(Job job);
  12. }
  13.  
  14. public void setOnItemClickListener(OnJobClickListener listener) {
  15. mListener = listener;
  16. }
  17.  
  18. // Provide a reference to the views for each data item
  19. // Provide access to all the views for a data item in a view holder
  20. public class ViewHolder extends RecyclerView.ViewHolder {
  21.  
  22. public TextView jobTitle;
  23. public TextView companyName;
  24. public TextView datePosted;
  25. public ImageView companyLogo;
  26. public View layout;
  27.  
  28.  
  29. public ViewHolder(View itemView) {
  30. super(itemView);
  31. layout = itemView;
  32. jobTitle = layout.findViewById(R.id.textView_job_title);
  33. companyName = layout.findViewById(R.id.textView_company_name);
  34. datePosted = layout.findViewById(R.id.textView_date);
  35. companyLogo = layout.findViewById(R.id.imageViewLogo);
  36.  
  37. itemView.setOnClickListener(new View.OnClickListener() {
  38. @Override
  39. public void onClick(View view) {
  40. if (mListener != null) {
  41. int position = getAdapterPosition();
  42. if (position != RecyclerView.NO_POSITION) {
  43. Job currentJob = jobs.get(position);
  44. mListener.onJobClick(currentJob);
  45. }
  46. }
  47. }
  48. });
  49. }
  50. }
  51.  
  52.  
  53. // Job constructor
  54. public JobAdapter(List<Job> job, OnJobClickListener listener) {
  55. jobs = job.subList(1, job.size());
  56. this.mListener = listener;
  57. jobsListFiltered = new ArrayList<>(job);
  58. }
  59.  
  60. // Create new views (invoked by the layout manager)
  61. @Override
  62. public JobAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  63. // create a new view
  64. LayoutInflater inflater = LayoutInflater.from(parent.getContext());
  65. View v = inflater.inflate(R.layout.job_item_row, parent, false);
  66.  
  67. // set the view's size, margins, paddings and layout parameters
  68. ViewHolder vh = new ViewHolder(v);
  69. return vh;
  70. }
  71.  
  72. // Replace the contents of a view (invoked by the layout manager)
  73. @Override
  74. public void onBindViewHolder(ViewHolder holder, int position) {
  75. // Get element from the dataset at this position
  76. // Replace the contents of the view with that element
  77. Job currentJob = jobs.get(position);
  78.  
  79. String mJobTitle = currentJob.getJobTitle();
  80. holder.jobTitle.setText(mJobTitle);
  81.  
  82. String mCompanyName = currentJob.getCompanyName();
  83. holder.companyName.setText(mCompanyName);
  84.  
  85. Context context = holder.datePosted.getContext();
  86.  
  87. Date mDatePosted = currentJob.getDatePosted();
  88. String dateFormat = formatDayMonth(context, mDatePosted);
  89. holder.datePosted.getContext();
  90. holder.datePosted.setText(dateFormat);
  91.  
  92. String mCompanyLogo = currentJob.getCompanyLogo();
  93. RequestOptions requestOptions = new RequestOptions()
  94. .placeholder(R.drawable.ic_launcher_foreground)
  95. .circleCrop();
  96. Glide.with(context)
  97. .load(mCompanyLogo)
  98. .apply(requestOptions)
  99. .into(holder.companyLogo);
  100. }
  101.  
  102. @Nullable
  103. public static String formatDayMonth (@NonNull Context context, @Nullable Date date){
  104. if (date == null) {
  105. return null;
  106. }
  107.  
  108. SimpleDateFormat sdf = new SimpleDateFormat(
  109. context.getString(R.string.format_date),
  110. Locale.US);
  111. return sdf.format(date);
  112. }
  113.  
  114. public int getItemCount () {
  115. return (jobs != null) ? jobs.size() : 0;
  116. }
  117.  
  118. @Override
  119. public Filter getFilter() {
  120. return jobFilter;
  121. }
  122.  
  123. private Filter jobFilter = new Filter() {
  124. @Override
  125. protected FilterResults performFiltering(CharSequence constraint) {
  126. List<Job> filteredList = new LinkedList<>();
  127.  
  128. if (constraint == null || constraint.length() == 0) {
  129. filteredList.addAll(jobsListFiltered);
  130. } else {
  131. String filterPattern = constraint.toString().toLowerCase().trim();
  132.  
  133. for (Job job : jobsListFiltered) {
  134. if (job.getJobTitle().toLowerCase().contains(filterPattern)) {
  135. filteredList.add(job);
  136. }
  137. }
  138. }
  139.  
  140. FilterResults results = new FilterResults();
  141. results.values = filteredList;
  142.  
  143. return results;
  144. }
  145.  
  146. @Override
  147. protected void publishResults(CharSequence constraint, FilterResults results) {
  148. jobs.clear();
  149. jobs.addAll((LinkedList)results.values);
  150. notifyDataSetChanged();
  151. }
  152. };
Add Comment
Please, Sign In to add comment