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

Generify body, feed, user, role adapters

parent 305b983b
package app.insti.adapter;
import android.content.Context;
import android.support.v4.app.Fragment;
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 android.support.v4.app.FragmentActivity;
import java.util.List;
import app.insti.R;
import app.insti.Utils;
import app.insti.api.model.Body;
public class BodyAdapter extends RecyclerView.Adapter<BodyAdapter.ViewHolder> {
private List<Body> bodyList;
private Context context;
private Fragment fragment;
public class BodyAdapter extends CardAdapter<Body> {
public BodyAdapter(List<Body> bodyList, Fragment mFragment) {
this.bodyList = bodyList;
fragment = mFragment;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
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());
super(bodyList, mFragment);
}
});
return postViewHolder;
public void onClick(Body body, FragmentActivity fragmentActivity) {
Utils.openBodyFragment(body, fragmentActivity);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
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);
public String getTitle(Body body) {
return body.getBodyName();
}
@Override
public int getItemCount() {
return bodyList.size();
}
public void setBodyList(List<Body> bodyList) {
this.bodyList = bodyList;
public String getSubtitle(Body body) {
return body.getBodyShortDescription();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView name;
public TextView description;
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);
}
@Override
public String getAvatarUrl(Body body) {
return body.getBodyImageURL();
}
}
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;
import android.content.Context;
import android.support.v4.app.Fragment;
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 android.support.v4.app.FragmentActivity;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
......@@ -17,28 +9,33 @@ import java.util.Calendar;
import java.util.Date;
import java.util.List;
import app.insti.R;
import app.insti.Utils;
import app.insti.api.model.Event;
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;
private Context context;
private Fragment mFragment;
@Override
public void onClick(Event event, FragmentActivity fragmentActivity) {
Utils.openEventFragment(event, fragmentActivity);
}
public FeedAdapter(List<Event> events, Fragment fragment) {
this.events = events;
mFragment = fragment;
@Override
public String getTitle(Event event) {
return event.getEventName();
}
public void getSubtitle(ViewHolder viewHolder, Event currentEvent)
@Override
public String getSubtitle(Event event)
{
String subtitle = "";
Date startTime = currentEvent.getEventStartTime();
Date endTime = currentEvent.getEventEndTime();
Date startTime = event.getEventStartTime();
Date endTime = event.getEventEndTime();
Date timeNow = Calendar.getInstance().getTime();
boolean eventStarted = timeNow.compareTo(startTime) > 0;
boolean eventEnded = timeNow.compareTo(endTime) > 0;
......@@ -63,7 +60,7 @@ public class FeedAdapter extends RecyclerView.Adapter<FeedAdapter.ViewHolder> {
subtitle += "Ends in " + timeDiff + " | " ;
}
Timestamp timestamp = currentEvent.getEventStartTime();
Timestamp timestamp = event.getEventStartTime();
if (timestamp != null) {
Date Date = new Date(timestamp.getTime());
SimpleDateFormat simpleDateFormatDate = new SimpleDateFormat("dd MMM");
......@@ -72,79 +69,25 @@ public class FeedAdapter extends RecyclerView.Adapter<FeedAdapter.ViewHolder> {
subtitle += simpleDateFormatDate.format(Date) + " | " + simpleDateFormatTime.format(Date);
}
StringBuilder eventVenueName = new StringBuilder();
for (Venue venue : currentEvent.getEventVenues()) {
for (Venue venue : event.getEventVenues()) {
eventVenueName.append(", ").append(venue.getVenueShortName());
}
if (!eventVenueName.toString().equals(""))
subtitle += " | " + eventVenueName.toString().substring(2);
viewHolder.eventSubtitle.setText(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;
return subtitle;
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
Event currentEvent = events.get(i);
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);
}
public String getAvatarUrl(Event event) {
return event.getEventImageURL();
}
@Override
public int getItemCount() {
return events.size();
}
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);
public String getBigImageUrl(Event event) {
if (event.isEventBigImage()) {
return event.getEventImageURL();
}
return null;
}
}
package app.insti.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
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 android.support.v4.app.FragmentActivity;
import java.util.List;
import app.insti.R;
import app.insti.Utils;
import app.insti.api.model.Body;
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) {
this.roleList = roleList;
this.fragment = mFragment;
super(roleList, mFragment);
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
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(roleList.get(postViewHolder.getAdapterPosition()).getRoleBodyDetails(), fragment.getActivity());
}
});
return postViewHolder;
public void onClick(Role role, FragmentActivity fragmentActivity) {
Utils.openBodyFragment(role.getRoleBodyDetails(), fragmentActivity);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
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);
public String getTitle(Role role) {
return role.getRoleBodyDetails().getBodyName();
}
@Override
public int getItemCount() {
return roleList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView bodyName;
public TextView role;
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);
public String getSubtitle(Role role) {
return role.getRoleName();
}
@Override
public String getAvatarUrl(Role role) {
return role.getRoleBodyDetails().getBodyImageURL();
}
}
package app.insti.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
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 android.support.v4.app.FragmentActivity;
import java.util.List;
......@@ -18,70 +9,38 @@ import app.insti.R;
import app.insti.Utils;
import app.insti.api.model.User;
public class UserAdapter extends RecyclerView.Adapter<UserAdapter.ViewHolder> {
private List<User> userList;
private Fragment fragment;
public class UserAdapter extends CardAdapter<User> {
public UserAdapter(List<User> userList, Fragment mFragment) {
this.userList = userList;
fragment = mFragment;
super(userList, mFragment);
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
Context 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.openUserFragment(userList.get(postViewHolder.getAdapterPosition()), fragment.getActivity());
public void onClick(User user, FragmentActivity fragmentActivity) {
Utils.openUserFragment(user, fragmentActivity);
}
});
return postViewHolder;
@Override
public String getTitle(User user) {
return user.getUserName();
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
User user = userList.get(position);
holder.userName.setText(user.getUserName());
public String getSubtitle(User user) {
if (user.getCurrentRole() == null || user.getCurrentRole().equals("")) {
holder.role.setText(user.getUserLDAPId());
return user.getUserLDAPId();
} 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
public int getItemCount() {
return userList.size();
public String getAvatarUrl(User user) {
return user.getUserProfilePictureUrl();
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
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);
}
@Override
public int getAvatarPlaceholder() {
return R.drawable.user_placeholder;
}
}
......@@ -167,7 +167,7 @@ public class CalendarFragment extends BaseFragment {
if (feedAdapter == null) {
feedAdapter = new FeedAdapter(filteredEvents, this);
} else {
feedAdapter.setEvents(filteredEvents);
feedAdapter.setList(filteredEvents);
feedAdapter.notifyDataSetChanged();
}
......
......@@ -162,9 +162,9 @@ public class ExploreFragment extends Fragment {
getView().findViewById(R.id.loadingPanel).setVisibility(View.GONE);
// Set adapters data
bodyAdapter.setBodyList(bodies);
eventsAdapter.setEvents(events);
userAdapter.setUserList(users);
bodyAdapter.setList(bodies);
eventsAdapter.setList(events);
userAdapter.setList(users);
// Notify all adapters
bodyAdapter.notifyDataSetChanged();
......
......@@ -159,7 +159,7 @@ public class FeedFragment extends BaseFragment {
if (feedAdapter == null) {
feedAdapter = new FeedAdapter(events, this);
} else {
feedAdapter.setEvents(events);
feedAdapter.setList(events);
feedAdapter.notifyDataSetChanged();
}
......
......@@ -25,12 +25,6 @@
android:textColor="@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
android:layout_width="match_parent"
android:layout_height="wrap_content"
......@@ -39,24 +33,20 @@
<android.support.v7.widget.RecyclerView
android:id="@+id/explore_body_recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false" />
android:layout_height="wrap_content" />
<android.support.v7.widget.RecyclerView
android:id="@+id/explore_event_recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false" />
android:layout_height="wrap_content" />
<android.support.v7.widget.RecyclerView
android:id="@+id/explore_user_recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false" />
android:layout_height="wrap_content" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</LinearLayout>
<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