Commit 98b30cf8 authored by Varun Patil's avatar Varun Patil

Generify body, feed, user, role adapters

parent 305b983b
package app.insti.adapter; package app.insti.adapter;
import android.content.Context;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v7.widget.RecyclerView; import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.util.List; import java.util.List;
import app.insti.R;
import app.insti.Utils; import app.insti.Utils;
import app.insti.api.model.Body; import app.insti.api.model.Body;
public class BodyAdapter extends RecyclerView.Adapter<BodyAdapter.ViewHolder> { public class BodyAdapter extends CardAdapter<Body> {
private List<Body> bodyList;
private Context context;
private Fragment fragment;
public BodyAdapter(List<Body> bodyList, Fragment mFragment) { public BodyAdapter(List<Body> bodyList, Fragment mFragment) {
this.bodyList = bodyList; super(bodyList, mFragment);
fragment = mFragment;
} }
@Override public void onClick(Body body, FragmentActivity fragmentActivity) {
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { Utils.openBodyFragment(body, fragmentActivity);
context = parent.getContext();
View v = LayoutInflater.from(context)
.inflate(R.layout.feed_card, parent, false);
final ViewHolder postViewHolder = new ViewHolder(v);
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Utils.openBodyFragment(bodyList.get(postViewHolder.getAdapterPosition()), fragment.getActivity());
}
});
return postViewHolder;
} }
@Override @Override
public void onBindViewHolder(ViewHolder holder, int position) { public String getTitle(Body body) {
return body.getBodyName();
Body body = bodyList.get(position);
holder.name.setText(body.getBodyName());
holder.description.setText(body.getBodyShortDescription());
Picasso.get().load(
Utils.resizeImageUrl(body.getBodyImageURL())
).into(holder.image);
} }
@Override @Override
public int getItemCount() { public String getSubtitle(Body body) {
return bodyList.size(); return body.getBodyShortDescription();
}
public void setBodyList(List<Body> bodyList) {
this.bodyList = bodyList;
} }
public class ViewHolder extends RecyclerView.ViewHolder { @Override
public TextView name; public String getAvatarUrl(Body body) {
public TextView description; return body.getBodyImageURL();
public ImageView image;
public ViewHolder(View itemView) {
super(itemView);
name = (TextView) itemView.findViewById(R.id.object_title);
description = (TextView) itemView.findViewById(R.id.object_subtitle);
image = (ImageView) itemView.findViewById(R.id.object_picture);
}
} }
} }
package app.insti.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.RequestCreator;
import java.util.List;
import app.insti.R;
import app.insti.Utils;
public abstract class CardAdapter<T> extends RecyclerView.Adapter<CardAdapter<T>.ViewHolder> {
private List<T> tList;
private Fragment mFragment;
public abstract void onClick(T t, FragmentActivity fragmentActivity);
public abstract String getAvatarUrl(T t);
public abstract String getTitle(T t);
public abstract String getSubtitle(T t);
public String getBigImageUrl(T t) {
return null;
}
public int getAvatarPlaceholder() {
return 0;
}
public CardAdapter(List<T> tList, Fragment fragment) {
this.tList = tList;
mFragment = fragment;
}
@Override
@NonNull
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, final int i) {
Context context = viewGroup.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
View postView = inflater.inflate(R.layout.feed_card, viewGroup, false);
final ViewHolder postViewHolder = new ViewHolder(postView);
postView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CardAdapter.this.onClick(tList.get(postViewHolder.getAdapterPosition()), mFragment.getActivity());
}
});
return postViewHolder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
T t = tList.get(i);
viewHolder.title.setText(getTitle(t));
viewHolder.subtitle.setText(getSubtitle(t));
if (getBigImageUrl(t) != null) {
// Show big image, hide avatar
viewHolder.bigPicture.setVisibility(View.VISIBLE);
viewHolder.avatar.setVisibility(View.GONE);
// Load big image with low resolution as avatar
Utils.loadImageWithPlaceholder(viewHolder.bigPicture, getBigImageUrl(t));
} else {
// Build basic request
RequestCreator requestCreator = Picasso.get().load(Utils.resizeImageUrl(getAvatarUrl(t)));
// Check if we have a placeholder
if (getAvatarPlaceholder() != 0) {
requestCreator.placeholder(getAvatarPlaceholder());
}
// Load the image
requestCreator.into(viewHolder.avatar);
}
}
public class ViewHolder extends RecyclerView.ViewHolder {
private ImageView avatar;
private TextView title;
private TextView subtitle;
private ImageView bigPicture;
public ViewHolder(View itemView) {
super(itemView);
avatar = itemView.findViewById(R.id.object_picture);
title = itemView.findViewById(R.id.object_title);
subtitle = itemView.findViewById(R.id.object_subtitle);
bigPicture = itemView.findViewById(R.id.big_object_picture);
}
}
@Override
public int getItemViewType(int position) {
if (position == 0) return 1;
else return 2;
}
@Override
public int getItemCount() {
return tList.size();
}
public void setList(List<T> tList) {
this.tList = tList;
}
}
package app.insti.adapter; package app.insti.adapter;
import android.content.Context;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v7.widget.RecyclerView; import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
...@@ -17,28 +9,33 @@ import java.util.Calendar; ...@@ -17,28 +9,33 @@ import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import app.insti.R;
import app.insti.Utils; import app.insti.Utils;
import app.insti.api.model.Event; import app.insti.api.model.Event;
import app.insti.api.model.Venue; import app.insti.api.model.Venue;
public class FeedAdapter extends RecyclerView.Adapter<FeedAdapter.ViewHolder> { public class FeedAdapter extends CardAdapter<Event> {
public FeedAdapter(List<Event> eventList, Fragment fragment) {
super(eventList, fragment);
}
private List<Event> events; @Override
private Context context; public void onClick(Event event, FragmentActivity fragmentActivity) {
private Fragment mFragment; Utils.openEventFragment(event, fragmentActivity);
}
public FeedAdapter(List<Event> events, Fragment fragment) { @Override
this.events = events; public String getTitle(Event event) {
mFragment = fragment; return event.getEventName();
} }
public void getSubtitle(ViewHolder viewHolder, Event currentEvent) @Override
public String getSubtitle(Event event)
{ {
String subtitle = ""; String subtitle = "";
Date startTime = currentEvent.getEventStartTime(); Date startTime = event.getEventStartTime();
Date endTime = currentEvent.getEventEndTime(); Date endTime = event.getEventEndTime();
Date timeNow = Calendar.getInstance().getTime(); Date timeNow = Calendar.getInstance().getTime();
boolean eventStarted = timeNow.compareTo(startTime) > 0; boolean eventStarted = timeNow.compareTo(startTime) > 0;
boolean eventEnded = timeNow.compareTo(endTime) > 0; boolean eventEnded = timeNow.compareTo(endTime) > 0;
...@@ -63,7 +60,7 @@ public class FeedAdapter extends RecyclerView.Adapter<FeedAdapter.ViewHolder> { ...@@ -63,7 +60,7 @@ public class FeedAdapter extends RecyclerView.Adapter<FeedAdapter.ViewHolder> {
subtitle += "Ends in " + timeDiff + " | " ; subtitle += "Ends in " + timeDiff + " | " ;
} }
Timestamp timestamp = currentEvent.getEventStartTime(); Timestamp timestamp = event.getEventStartTime();
if (timestamp != null) { if (timestamp != null) {
Date Date = new Date(timestamp.getTime()); Date Date = new Date(timestamp.getTime());
SimpleDateFormat simpleDateFormatDate = new SimpleDateFormat("dd MMM"); SimpleDateFormat simpleDateFormatDate = new SimpleDateFormat("dd MMM");
...@@ -72,79 +69,25 @@ public class FeedAdapter extends RecyclerView.Adapter<FeedAdapter.ViewHolder> { ...@@ -72,79 +69,25 @@ public class FeedAdapter extends RecyclerView.Adapter<FeedAdapter.ViewHolder> {
subtitle += simpleDateFormatDate.format(Date) + " | " + simpleDateFormatTime.format(Date); subtitle += simpleDateFormatDate.format(Date) + " | " + simpleDateFormatTime.format(Date);
} }
StringBuilder eventVenueName = new StringBuilder(); StringBuilder eventVenueName = new StringBuilder();
for (Venue venue : currentEvent.getEventVenues()) { for (Venue venue : event.getEventVenues()) {
eventVenueName.append(", ").append(venue.getVenueShortName()); eventVenueName.append(", ").append(venue.getVenueShortName());
} }
if (!eventVenueName.toString().equals("")) if (!eventVenueName.toString().equals(""))
subtitle += " | " + eventVenueName.toString().substring(2); subtitle += " | " + eventVenueName.toString().substring(2);
viewHolder.eventSubtitle.setText(subtitle); return subtitle;
return ;
}
@Override
public int getItemViewType(int position) {
if (position == 0) return 1;
else return 2;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, final int i) {
context = viewGroup.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
View postView = inflater.inflate(R.layout.feed_card, viewGroup, false);
final ViewHolder postViewHolder = new ViewHolder(postView);
postView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Utils.openEventFragment(events.get(postViewHolder.getAdapterPosition()), mFragment.getActivity());
}
});
return postViewHolder;
} }
@Override @Override
public void onBindViewHolder(ViewHolder viewHolder, int i) { public String getAvatarUrl(Event event) {
Event currentEvent = events.get(i); return event.getEventImageURL();
viewHolder.eventTitle.setText(currentEvent.getEventName());
getSubtitle(viewHolder, currentEvent);
if (currentEvent.isEventBigImage()) {
viewHolder.eventBigPicture.setVisibility(View.VISIBLE);
viewHolder.eventPicture.setVisibility(View.GONE);
Utils.loadImageWithPlaceholder(viewHolder.eventBigPicture, currentEvent.getEventImageURL());
} else {
Picasso.get().load(
Utils.resizeImageUrl(currentEvent.getEventImageURL())
).into(viewHolder.eventPicture);
}
} }
@Override @Override
public int getItemCount() { public String getBigImageUrl(Event event) {
return events.size(); if (event.isEventBigImage()) {
} return event.getEventImageURL();
public void setEvents(List<Event> events) {
this.events = events;
}
public class ViewHolder extends RecyclerView.ViewHolder {
private ImageView eventPicture;
private TextView eventTitle;
private TextView eventSubtitle;
private ImageView eventBigPicture;
public ViewHolder(View itemView) {
super(itemView);
eventPicture = (ImageView) itemView.findViewById(R.id.object_picture);
eventTitle = (TextView) itemView.findViewById(R.id.object_title);
eventSubtitle = (TextView) itemView.findViewById(R.id.object_subtitle);
eventBigPicture = (ImageView) itemView.findViewById(R.id.big_object_picture);
} }
return null;
} }
} }
package app.insti.adapter; package app.insti.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v7.widget.RecyclerView; import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.util.List; import java.util.List;
import app.insti.R;
import app.insti.Utils; import app.insti.Utils;
import app.insti.api.model.Body;
import app.insti.api.model.Role; import app.insti.api.model.Role;
import app.insti.interfaces.ItemClickListener;
public class RoleAdapter extends RecyclerView.Adapter<RoleAdapter.ViewHolder> { public class RoleAdapter extends CardAdapter<Role> {
private List<Role> roleList;
private Context context;
private Fragment fragment;
public RoleAdapter(List<Role> roleList, Fragment mFragment) { public RoleAdapter(List<Role> roleList, Fragment mFragment) {
this.roleList = roleList; super(roleList, mFragment);
this.fragment = mFragment;
} }
@NonNull
@Override @Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { public void onClick(Role role, FragmentActivity fragmentActivity) {
context = parent.getContext(); Utils.openBodyFragment(role.getRoleBodyDetails(), fragmentActivity);
View v = LayoutInflater.from(context)
.inflate(R.layout.feed_card, parent, false);
final ViewHolder postViewHolder = new ViewHolder(v);
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Utils.openBodyFragment(roleList.get(postViewHolder.getAdapterPosition()).getRoleBodyDetails(), fragment.getActivity());
}
});
return postViewHolder;
} }
@Override @Override
public void onBindViewHolder(ViewHolder holder, int position) { public String getTitle(Role role) {
return role.getRoleBodyDetails().getBodyName();
Role role = roleList.get(position);
Body roleBody = role.getRoleBodyDetails();
holder.bodyName.setText(roleBody.getBodyName());
holder.role.setText(role.getRoleName());
Picasso.get().load(
Utils.resizeImageUrl(roleBody.getBodyImageURL())
).into(holder.image);
} }
@Override @Override
public int getItemCount() { public String getSubtitle(Role role) {
return roleList.size(); return role.getRoleName();
} }
public class ViewHolder extends RecyclerView.ViewHolder { @Override
public TextView bodyName; public String getAvatarUrl(Role role) {
public TextView role; return role.getRoleBodyDetails().getBodyImageURL();
public ImageView image;
public ViewHolder(View itemView) {
super(itemView);
bodyName = (TextView) itemView.findViewById(R.id.object_title);
role = (TextView) itemView.findViewById(R.id.object_subtitle);
image = (ImageView) itemView.findViewById(R.id.object_picture);
}
} }
} }
package app.insti.adapter; package app.insti.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v7.widget.RecyclerView; import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.util.List; import java.util.List;
...@@ -18,70 +9,38 @@ import app.insti.R; ...@@ -18,70 +9,38 @@ import app.insti.R;
import app.insti.Utils; import app.insti.Utils;
import app.insti.api.model.User; import app.insti.api.model.User;
public class UserAdapter extends RecyclerView.Adapter<UserAdapter.ViewHolder> { public class UserAdapter extends CardAdapter<User> {
private List<User> userList;
private Fragment fragment;
public UserAdapter(List<User> userList, Fragment mFragment) { public UserAdapter(List<User> userList, Fragment mFragment) {
this.userList = userList; super(userList, mFragment);
fragment = mFragment;
} }
@NonNull
@Override @Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { public void onClick(User user, FragmentActivity fragmentActivity) {
Context context = parent.getContext(); Utils.openUserFragment(user, fragmentActivity);
View v = LayoutInflater.from(context) }
.inflate(R.layout.feed_card, parent, false);
final ViewHolder postViewHolder = new ViewHolder(v);
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Utils.openUserFragment(userList.get(postViewHolder.getAdapterPosition()), fragment.getActivity());
}
});
return postViewHolder; @Override
public String getTitle(User user) {
return user.getUserName();
} }
@Override @Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) { public String getSubtitle(User user) {
User user = userList.get(position);
holder.userName.setText(user.getUserName());
if (user.getCurrentRole() == null || user.getCurrentRole().equals("")) { if (user.getCurrentRole() == null || user.getCurrentRole().equals("")) {
holder.role.setText(user.getUserLDAPId()); return user.getUserLDAPId();
} else { } else {
holder.role.setText(user.getCurrentRole()); return user.getCurrentRole();
} }
Picasso.get()
.load(user.getUserProfilePictureUrl())
.resize(150, 0)
.placeholder(R.drawable.user_placeholder)
.into(holder.image);
} }
@Override @Override
public int getItemCount() { public String getAvatarUrl(User user) {
return userList.size(); return user.getUserProfilePictureUrl();
} }
public void setUserList(List<User> userList) { @Override
this.userList = userList; public int getAvatarPlaceholder() {
} return R.drawable.user_placeholder;
public class ViewHolder extends RecyclerView.ViewHolder {
private TextView userName;
private TextView role;
public ImageView image;
public ViewHolder(View itemView) {
super(itemView);
userName = itemView.findViewById(R.id.object_title);
role = itemView.findViewById(R.id.object_subtitle);
image = itemView.findViewById(R.id.object_picture);
}
} }
} }
...@@ -167,7 +167,7 @@ public class CalendarFragment extends BaseFragment { ...@@ -167,7 +167,7 @@ public class CalendarFragment extends BaseFragment {
if (feedAdapter == null) { if (feedAdapter == null) {
feedAdapter = new FeedAdapter(filteredEvents, this); feedAdapter = new FeedAdapter(filteredEvents, this);
} else { } else {
feedAdapter.setEvents(filteredEvents); feedAdapter.setList(filteredEvents);
feedAdapter.notifyDataSetChanged(); feedAdapter.notifyDataSetChanged();
} }
......
...@@ -162,9 +162,9 @@ public class ExploreFragment extends Fragment { ...@@ -162,9 +162,9 @@ public class ExploreFragment extends Fragment {
getView().findViewById(R.id.loadingPanel).setVisibility(View.GONE); getView().findViewById(R.id.loadingPanel).setVisibility(View.GONE);
// Set adapters data // Set adapters data
bodyAdapter.setBodyList(bodies); bodyAdapter.setList(bodies);
eventsAdapter.setEvents(events); eventsAdapter.setList(events);
userAdapter.setUserList(users); userAdapter.setList(users);
// Notify all adapters // Notify all adapters
bodyAdapter.notifyDataSetChanged(); bodyAdapter.notifyDataSetChanged();
......
...@@ -159,7 +159,7 @@ public class FeedFragment extends BaseFragment { ...@@ -159,7 +159,7 @@ public class FeedFragment extends BaseFragment {
if (feedAdapter == null) { if (feedAdapter == null) {
feedAdapter = new FeedAdapter(events, this); feedAdapter = new FeedAdapter(events, this);
} else { } else {
feedAdapter.setEvents(events); feedAdapter.setList(events);
feedAdapter.notifyDataSetChanged(); feedAdapter.notifyDataSetChanged();
} }
......
...@@ -25,12 +25,6 @@ ...@@ -25,12 +25,6 @@
android:textColor="@color/primaryTextColor" android:textColor="@color/primaryTextColor"
android:textColorHint="@color/primaryTextColor" /> android:textColorHint="@color/primaryTextColor" />
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
...@@ -39,24 +33,20 @@ ...@@ -39,24 +33,20 @@
<android.support.v7.widget.RecyclerView <android.support.v7.widget.RecyclerView
android:id="@+id/explore_body_recycler_view" android:id="@+id/explore_body_recycler_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content" />
android:nestedScrollingEnabled="false" />
<android.support.v7.widget.RecyclerView <android.support.v7.widget.RecyclerView
android:id="@+id/explore_event_recycler_view" android:id="@+id/explore_event_recycler_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content" />
android:nestedScrollingEnabled="false" />
<android.support.v7.widget.RecyclerView <android.support.v7.widget.RecyclerView
android:id="@+id/explore_user_recycler_view" android:id="@+id/explore_user_recycler_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content" />
android:nestedScrollingEnabled="false" />
</LinearLayout> </LinearLayout>
</android.support.v4.widget.NestedScrollView>
</LinearLayout> </LinearLayout>
<RelativeLayout <RelativeLayout
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment