Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
I
InstiApp
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
RAHUL SHARMA
InstiApp
Commits
56efc43e
Commit
56efc43e
authored
Nov 06, 2018
by
Sajal Narang
Committed by
GitHub
Nov 06, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #235 from wncc/generifyadapters
Generify Adapters
parents
76c88c8b
026e0233
Changes
21
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
469 additions
and
503 deletions
+469
-503
app/src/main/java/app/insti/Utils.java
app/src/main/java/app/insti/Utils.java
+5
-0
app/src/main/java/app/insti/activity/MainActivity.java
app/src/main/java/app/insti/activity/MainActivity.java
+2
-0
app/src/main/java/app/insti/adapter/BodyAdapter.java
app/src/main/java/app/insti/adapter/BodyAdapter.java
+5
-66
app/src/main/java/app/insti/adapter/CardAdapter.java
app/src/main/java/app/insti/adapter/CardAdapter.java
+125
-0
app/src/main/java/app/insti/adapter/FeedAdapter.java
app/src/main/java/app/insti/adapter/FeedAdapter.java
+12
-127
app/src/main/java/app/insti/adapter/GenericAdapter.java
app/src/main/java/app/insti/adapter/GenericAdapter.java
+39
-0
app/src/main/java/app/insti/adapter/NotificationsAdapter.java
...src/main/java/app/insti/adapter/NotificationsAdapter.java
+33
-69
app/src/main/java/app/insti/adapter/RoleAdapter.java
app/src/main/java/app/insti/adapter/RoleAdapter.java
+5
-68
app/src/main/java/app/insti/adapter/UserAdapter.java
app/src/main/java/app/insti/adapter/UserAdapter.java
+7
-67
app/src/main/java/app/insti/api/model/Body.java
app/src/main/java/app/insti/api/model/Body.java
+15
-1
app/src/main/java/app/insti/api/model/Event.java
app/src/main/java/app/insti/api/model/Event.java
+62
-1
app/src/main/java/app/insti/api/model/Notification.java
app/src/main/java/app/insti/api/model/Notification.java
+61
-2
app/src/main/java/app/insti/api/model/Role.java
app/src/main/java/app/insti/api/model/Role.java
+15
-1
app/src/main/java/app/insti/api/model/User.java
app/src/main/java/app/insti/api/model/User.java
+19
-1
app/src/main/java/app/insti/fragment/CalendarFragment.java
app/src/main/java/app/insti/fragment/CalendarFragment.java
+1
-1
app/src/main/java/app/insti/fragment/ExploreFragment.java
app/src/main/java/app/insti/fragment/ExploreFragment.java
+49
-38
app/src/main/java/app/insti/fragment/FeedFragment.java
app/src/main/java/app/insti/fragment/FeedFragment.java
+1
-1
app/src/main/java/app/insti/fragment/NotificationsFragment.java
...c/main/java/app/insti/fragment/NotificationsFragment.java
+1
-36
app/src/main/java/app/insti/interfaces/CardInterface.java
app/src/main/java/app/insti/interfaces/CardInterface.java
+7
-0
app/src/main/res/drawable/lotus_placeholder.png
app/src/main/res/drawable/lotus_placeholder.png
+0
-0
app/src/main/res/layout/fragment_explore.xml
app/src/main/res/layout/fragment_explore.xml
+5
-24
No files found.
app/src/main/java/app/insti/Utils.java
View file @
56efc43e
...
...
@@ -27,6 +27,7 @@ public final class Utils {
public
static
UpdatableList
<
Event
>
eventCache
=
new
UpdatableList
<>();
private
static
String
sessionId
;
private
static
RetrofitInterface
retrofitInterface
;
public
static
Gson
gson
;
public
static
boolean
darkTheme
=
false
;
public
static
final
void
loadImageWithPlaceholder
(
final
ImageView
imageView
,
final
String
url
)
{
...
...
@@ -118,6 +119,10 @@ public final class Utils {
}
}
public
static
void
makeGson
()
{
Utils
.
gson
=
new
Gson
();
}
public
static
void
changeTheme
(
FragmentActivity
context
)
{
if
(
darkTheme
)
{
context
.
setTheme
(
R
.
style
.
AppTheme
);
...
...
app/src/main/java/app/insti/activity/MainActivity.java
View file @
56efc43e
...
...
@@ -125,6 +125,8 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
ServiceGenerator
serviceGenerator
=
new
ServiceGenerator
(
getApplicationContext
());
Utils
.
setRetrofitInterface
(
serviceGenerator
.
getRetrofitInterface
());
Utils
.
makeGson
();
/* Make notification channel on oreo */
if
(
android
.
os
.
Build
.
VERSION
.
SDK_INT
>=
android
.
os
.
Build
.
VERSION_CODES
.
O
)
{
createNotificationChannel
();
...
...
app/src/main/java/app/insti/adapter/BodyAdapter.java
View file @
56efc43e
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
;
}
@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
);
}
@Override
public
int
getItemCount
()
{
return
bodyList
.
size
();
}
public
void
setBodyList
(
List
<
Body
>
bodyList
)
{
this
.
bodyList
=
bodyList
;
}
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
);
}
public
void
onClick
(
Body
body
,
FragmentActivity
fragmentActivity
)
{
Utils
.
openBodyFragment
(
body
,
fragmentActivity
);
}
}
app/src/main/java/app/insti/adapter/CardAdapter.java
0 → 100644
View file @
56efc43e
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
;
import
app.insti.interfaces.CardInterface
;
public
abstract
class
CardAdapter
<
T
extends
CardInterface
>
extends
RecyclerView
.
Adapter
<
CardAdapter
<
T
>.
ViewHolder
>
{
private
List
<
T
>
tList
;
private
Fragment
mFragment
;
public
abstract
void
onClick
(
T
t
,
FragmentActivity
fragmentActivity
);
public
String
getBigImageUrl
(
T
t
)
{
return
null
;
}
public
int
getAvatarPlaceholder
(
T
t
)
{
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
(
t
.
getTitle
());
viewHolder
.
subtitle
.
setText
(
t
.
getSubtitle
());
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
;
if
(
t
.
getAvatarUrl
()
!=
null
)
requestCreator
=
Picasso
.
get
().
load
(
Utils
.
resizeImageUrl
(
t
.
getAvatarUrl
()));
else
if
(
getAvatarPlaceholder
(
t
)
!=
0
)
{
requestCreator
=
Picasso
.
get
().
load
(
getAvatarPlaceholder
(
t
));
}
else
{
return
;
}
// Check if we have a placeholder
if
(
getAvatarPlaceholder
(
t
)
!=
0
)
{
requestCreator
.
placeholder
(
getAvatarPlaceholder
(
t
));
}
// 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
;
}
}
app/src/main/java/app/insti/adapter/FeedAdapter.java
View file @
56efc43e
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
android.support.v4.app.FragmentActivity
;
import
com.squareup.picasso.Picasso
;
import
java.sql.Timestamp
;
import
java.text.SimpleDateFormat
;
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
>
{
private
List
<
Event
>
events
;
private
Context
context
;
private
Fragment
mFragment
;
public
FeedAdapter
(
List
<
Event
>
events
,
Fragment
fragment
)
{
this
.
events
=
events
;
mFragment
=
fragment
;
}
public
void
getSubtitle
(
ViewHolder
viewHolder
,
Event
currentEvent
)
{
String
subtitle
=
""
;
Date
startTime
=
currentEvent
.
getEventStartTime
();
Date
endTime
=
currentEvent
.
getEventEndTime
();
Date
timeNow
=
Calendar
.
getInstance
().
getTime
();
boolean
eventStarted
=
timeNow
.
compareTo
(
startTime
)
>
0
;
boolean
eventEnded
=
timeNow
.
compareTo
(
endTime
)
>
0
;
if
(
eventEnded
)
subtitle
+=
"Event ended | "
;
else
if
(
eventStarted
)
{
long
difference
=
endTime
.
getTime
()
-
timeNow
.
getTime
();
long
minutes
=
difference
/
(
60
*
1000
)
%
60
;
long
hours
=
difference
/
(
60
*
60
*
1000
)
%
24
;
long
days
=
difference
/
(
24
*
60
*
60
*
1000
);
String
timeDiff
=
""
;
if
(
days
>
0
)
timeDiff
+=
Long
.
toString
(
days
)
+
"D "
;
if
(
hours
>
0
)
timeDiff
+=
Long
.
toString
(
hours
)
+
"H "
;
public
class
FeedAdapter
extends
CardAdapter
<
Event
>
{
timeDiff
+=
Long
.
toString
(
minutes
)
+
"M"
;
subtitle
+=
"Ends in "
+
timeDiff
+
" | "
;
}
Timestamp
timestamp
=
currentEvent
.
getEventStartTime
();
if
(
timestamp
!=
null
)
{
Date
Date
=
new
Date
(
timestamp
.
getTime
());
SimpleDateFormat
simpleDateFormatDate
=
new
SimpleDateFormat
(
"dd MMM"
);
SimpleDateFormat
simpleDateFormatTime
=
new
SimpleDateFormat
(
"HH:mm"
);
subtitle
+=
simpleDateFormatDate
.
format
(
Date
)
+
" | "
+
simpleDateFormatTime
.
format
(
Date
);
}
StringBuilder
eventVenueName
=
new
StringBuilder
();
for
(
Venue
venue
:
currentEvent
.
getEventVenues
())
{
eventVenueName
.
append
(
", "
).
append
(
venue
.
getVenueShortName
());
}
if
(!
eventVenueName
.
toString
().
equals
(
""
))
subtitle
+=
" | "
+
eventVenueName
.
toString
().
substring
(
2
);
viewHolder
.
eventSubtitle
.
setText
(
subtitle
);
return
;
public
FeedAdapter
(
List
<
Event
>
eventList
,
Fragment
fragment
)
{
super
(
eventList
,
fragment
);
}
@Override
public
int
getItemViewType
(
int
position
)
{
if
(
position
==
0
)
return
1
;
else
return
2
;
public
void
onClick
(
Event
event
,
FragmentActivity
fragmentActivity
)
{
Utils
.
openEventFragment
(
event
,
fragmentActivity
);
}
@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
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
getBigImageUrl
(
Event
event
)
{
if
(
event
.
isEventBigImage
())
{
return
event
.
getEventImageURL
();
}
return
null
;
}
@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
int
getAvatarPlaceholder
(
Event
event
)
{
return
R
.
drawable
.
lotus_placeholder
;
}
}
app/src/main/java/app/insti/adapter/GenericAdapter.java
0 → 100644
View file @
56efc43e
package
app.insti.adapter
;
import
android.support.v4.app.Fragment
;
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.Event
;
import
app.insti.api.model.User
;
import
app.insti.interfaces.CardInterface
;
public
class
GenericAdapter
extends
CardAdapter
<
CardInterface
>
{
public
GenericAdapter
(
List
<
CardInterface
>
cardInterfaceList
,
Fragment
fragment
){
super
(
cardInterfaceList
,
fragment
);
}
@Override
public
void
onClick
(
CardInterface
cardInterface
,
FragmentActivity
fragmentActivity
)
{
if
(
cardInterface
instanceof
Event
)
{
Utils
.
openEventFragment
((
Event
)
cardInterface
,
fragmentActivity
);
}
else
if
(
cardInterface
instanceof
Body
)
{
Utils
.
openBodyFragment
((
Body
)
cardInterface
,
fragmentActivity
);
}
else
if
(
cardInterface
instanceof
User
)
{
Utils
.
openUserFragment
((
User
)
cardInterface
,
fragmentActivity
);
}
}
@Override
public
int
getAvatarPlaceholder
(
CardInterface
cardInterface
)
{
if
(
cardInterface
instanceof
User
)
{
return
R
.
drawable
.
user_placeholder
;
}
return
R
.
drawable
.
lotus_placeholder
;
}
}
app/src/main/java/app/insti/adapter/NotificationsAdapter.java
View file @
56efc43e
package
app.insti.adapter
;
import
android.content.Context
;
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
android.support.v4.app.Fragment
;
import
android.support.v4.app.FragmentActivity
;
import
com.google.gson.Gson
;
import
com.squareup.picasso.Picasso
;
import
java.util.List
;
import
app.insti.R
;
import
app.insti.Utils
;
import
app.insti.api.EmptyCallback
;
import
app.insti.api.RetrofitInterface
;
import
app.insti.api.model.Event
;
import
app.insti.api.model.NewsArticle
;
import
app.insti.api.model.Notification
;
import
app.insti.api.model.PlacementBlogPost
;
import
app.insti.interfaces.ItemClickListener
;
import
app.insti.fragment.NewsFragment
;
import
app.insti.fragment.PlacementBlogFragment
;
import
app.insti.fragment.TrainingBlogFragment
;
public
class
NotificationsAdapter
extends
RecyclerView
.
Adapter
<
NotificationsAdapter
.
Viewholder
>
{
private
List
<
Notification
>
notifications
;
private
Context
context
;
private
ItemClickListener
itemClickListener
;
public
NotificationsAdapter
(
List
<
Notification
>
notifications
,
ItemClickListener
itemClickListener
)
{
this
.
notifications
=
notifications
;
this
.
itemClickListener
=
itemClickListener
;
}
@Override
public
Viewholder
onCreateViewHolder
(
ViewGroup
viewGroup
,
int
i
)
{
context
=
viewGroup
.
getContext
();
LayoutInflater
inflater
=
LayoutInflater
.
from
(
context
);
View
notificationView
=
inflater
.
inflate
(
R
.
layout
.
feed_card
,
viewGroup
,
false
);
final
Viewholder
notificationsViewHolder
=
new
Viewholder
(
notificationView
);
notificationView
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
itemClickListener
.
onItemClick
(
v
,
notificationsViewHolder
.
getAdapterPosition
());
}
});
return
notificationsViewHolder
;
public
class
NotificationsAdapter
extends
CardAdapter
<
Notification
>
{
public
NotificationsAdapter
(
List
<
Notification
>
notifications
,
Fragment
fragment
)
{
super
(
notifications
,
fragment
);
}
@Override
public
void
onBindViewHolder
(
Viewholder
viewholder
,
int
i
)
{
public
void
onClick
(
Notification
notification
,
FragmentActivity
fragmentActivity
)
{
/* Mark notification read */
RetrofitInterface
retrofitInterface
=
Utils
.
getRetrofitInterface
();
String
sessId
=
Utils
.
getSessionIDHeader
();
retrofitInterface
.
markNotificationRead
(
sessId
,
notification
.
getNotificationId
().
toString
()).
enqueue
(
new
EmptyCallback
<
Void
>());
/* Open event */
if
(
notification
.
isEvent
())
{
Gson
gson
=
new
Gson
();
Notification
appNotification
=
notifications
.
get
(
i
);
viewholder
.
notificationVerb
.
setText
(
appNotification
.
getNotificationVerb
());
if
(
appNotification
.
getNotificationActorType
().
contains
(
"event"
))
{
Event
event
=
gson
.
fromJson
(
gson
.
toJson
(
appNotification
.
getNotificationActor
()),
Event
.
class
);
Picasso
.
get
().
load
(
Utils
.
resizeImageUrl
(
event
.
getEventImageURL
())
).
into
(
viewholder
.
notificationPicture
);
viewholder
.
notificationTitle
.
setText
(
event
.
getEventName
());
}
else
if
(
appNotification
.
getNotificationActorType
().
contains
(
"newsentry"
))
{
NewsArticle
article
=
gson
.
fromJson
(
gson
.
toJson
(
appNotification
.
getNotificationActor
()),
NewsArticle
.
class
);
Picasso
.
get
().
load
(
Utils
.
resizeImageUrl
(
article
.
getBody
().
getBodyImageURL
())
).
into
(
viewholder
.
notificationPicture
);
viewholder
.
notificationTitle
.
setText
(
article
.
getTitle
());
}
else
if
(
appNotification
.
getNotificationActorType
().
contains
(
"blogentry"
))
{
PlacementBlogPost
post
=
gson
.
fromJson
(
gson
.
toJson
(
appNotification
.
getNotificationActor
()),
PlacementBlogPost
.
class
);
Picasso
.
get
().
load
(
R
.
drawable
.
lotus_sq
).
into
(
viewholder
.
notificationPicture
);
viewholder
.
notificationTitle
.
setText
(
post
.
getTitle
());
Event
event
=
gson
.
fromJson
(
gson
.
toJson
(
notification
.
getNotificationActor
()),
Event
.
class
)
;
Utils
.
openEventFragment
(
event
,
fragmentActivity
);
}
else
if
(
notification
.
isNews
())
{
NewsFragment
newsFragment
=
new
NewsFragment
();
Utils
.
updateFragment
(
newsFragment
,
fragmentActivity
);
}
else
if
(
notification
.
isBlogPost
())
{
Gson
gson
=
new
Gson
();
PlacementBlogPost
post
=
gson
.
fromJson
(
gson
.
toJson
(
notification
.
getNotificationActor
()),
PlacementBlogPost
.
class
);
if
(
post
.
getLink
().
contains
(
"training"
))
{
Utils
.
updateFragment
(
new
TrainingBlogFragment
(),
fragmentActivity
);
}
else
{
Utils
.
updateFragment
(
new
PlacementBlogFragment
(),
fragmentActivity
);
}
}
@Override
public
int
getItemCount
()
{
return
notifications
.
size
();
}
public
class
Viewholder
extends
RecyclerView
.
ViewHolder
{
private
TextView
notificationTitle
;
private
ImageView
notificationPicture
;
private
TextView
notificationVerb
;
public
Viewholder
(
View
itemView
)
{
super
(
itemView
);
notificationPicture
=
(
ImageView
)
itemView
.
findViewById
(
R
.
id
.
object_picture
);
notificationTitle
=
(
TextView
)
itemView
.
findViewById
(
R
.
id
.
object_title
);
notificationVerb
=
(
TextView
)
itemView
.
findViewById
(
R
.
id
.
object_subtitle
);
}
@Override
public
int
getAvatarPlaceholder
(
Notification
notification
)
{
return
R
.
drawable
.
lotus_sq
;
}
}
app/src/main/java/app/insti/adapter/RoleAdapter.java
View file @
56efc43e
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
>
{
private
List
<
Role
>
roleList
;
private
Context
context
;
private
Fragment
fragment
;
public
class
RoleAdapter
extends
CardAdapter
<
Role
>
{
public
RoleAdapter
(
List
<
Role
>
roleList
,
Fragment
mFragment
)
{
this
.
roleList
=
roleList
;
this
.
fragment
=
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
;
}
@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
);
super
(
roleList
,
mFragment
);
}
@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
void
onClick
(
Role
role
,
FragmentActivity
fragmentActivity
)
{
Utils
.
openBodyFragment
(
role
.
getRoleBodyDetails
(),
fragmentActivity
);
}
}
app/src/main/java/app/insti/adapter/UserAdapter.java
View file @
56efc43e
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,19 @@ 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
());
}
});
return
postViewHolder
;
public
void
onClick
(
User
user
,
FragmentActivity
fragmentActivity
)
{
Utils
.
openUserFragment
(
user
,
fragmentActivity
);
}
@Override
public
void
onBindViewHolder
(
@NonNull
ViewHolder
holder
,
int
position
)
{
User
user
=
userList
.
get
(
position
);
holder
.
userName
.
setText
(
user
.
getUserName
());
if
(
user
.
getCurrentRole
()
==
null
||
user
.
getCurrentRole
().
equals
(
""
))
{
holder
.
role
.
setText
(
user
.
getUserLDAPId
());
}
else
{
holder
.
role
.
setText
(
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
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
);
}
public
int
getAvatarPlaceholder
(
User
user
)
{
return
R
.
drawable
.
user_placeholder
;
}
}
app/src/main/java/app/insti/api/model/Body.java
View file @
56efc43e
...
...
@@ -6,7 +6,9 @@ import com.google.gson.annotations.SerializedName;
import
java.util.List
;
public
class
Body
{
import
app.insti.interfaces.CardInterface
;
public
class
Body
implements
CardInterface
{
@SerializedName
(
"id"
)
private
String
bodyID
;
...
...
@@ -181,4 +183,16 @@ public class Body {
public
void
setBodyRoles
(
List
<
Role
>
bodyRoles
)
{
this
.
bodyRoles
=
bodyRoles
;
}
public
String
getTitle
()
{
return
getBodyName
();
}
public
String
getSubtitle
()
{
return
getBodyShortDescription
();
}
public
String
getAvatarUrl
()
{
return
getBodyImageURL
();
}
}
\ No newline at end of file
app/src/main/java/app/insti/api/model/Event.java
View file @
56efc43e
...
...
@@ -6,10 +6,15 @@ import com.google.gson.Gson;
import
com.google.gson.annotations.SerializedName
;
import
java.sql.Timestamp
;
import
java.text.SimpleDateFormat
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Objects
;
public
class
Event
{
import
app.insti.interfaces.CardInterface
;
public
class
Event
implements
CardInterface
{
@NonNull
()
@SerializedName
(
"id"
)
private
String
eventID
;
...
...
@@ -237,4 +242,60 @@ public class Event {
public
int
hashCode
()
{
return
Objects
.
hash
(
eventID
);
}
public
String
getTitle
()
{
return
getEventName
();
}
public
String
getSubtitle
()
{
String
subtitle
=
""
;
Date
startTime
=
getEventStartTime
();
Date
endTime
=
getEventEndTime
();
Date
timeNow
=
Calendar
.
getInstance
().
getTime
();
boolean
eventStarted
=
timeNow
.
compareTo
(
startTime
)
>
0
;
boolean
eventEnded
=
timeNow
.
compareTo
(
endTime
)
>
0
;
if
(
eventEnded
)
subtitle
+=
"Event ended | "
;
else
if
(
eventStarted
)
{
long
difference
=
endTime
.
getTime
()
-
timeNow
.
getTime
();
long
minutes
=
difference
/
(
60
*
1000
)
%
60
;
long
hours
=
difference
/
(
60
*
60
*
1000
)
%
24
;
long
days
=
difference
/
(
24
*
60
*
60
*
1000
);
String
timeDiff
=
""
;
if
(
days
>
0
)
timeDiff
+=
Long
.
toString
(
days
)
+
"D "
;
if
(
hours
>
0
)
timeDiff
+=
Long
.
toString
(
hours
)
+
"H "
;
timeDiff
+=
Long
.
toString
(
minutes
)
+
"M"
;
subtitle
+=
"Ends in "
+
timeDiff
+
" | "
;
}
Timestamp
timestamp
=
getEventStartTime
();
if
(
timestamp
!=
null
)
{
Date
Date
=
new
Date
(
timestamp
.
getTime
());
SimpleDateFormat
simpleDateFormatDate
=
new
SimpleDateFormat
(
"dd MMM"
);
SimpleDateFormat
simpleDateFormatTime
=
new
SimpleDateFormat
(
"HH:mm"
);
subtitle
+=
simpleDateFormatDate
.
format
(
Date
)
+
" | "
+
simpleDateFormatTime
.
format
(
Date
);
}
StringBuilder
eventVenueName
=
new
StringBuilder
();
for
(
Venue
venue
:
getEventVenues
())
{
eventVenueName
.
append
(
", "
).
append
(
venue
.
getVenueShortName
());
}
if
(!
eventVenueName
.
toString
().
equals
(
""
))
subtitle
+=
" | "
+
eventVenueName
.
toString
().
substring
(
2
);
return
subtitle
;
}
public
String
getAvatarUrl
()
{
return
getEventImageURL
();
}
}
app/src/main/java/app/insti/api/model/Notification.java
View file @
56efc43e
...
...
@@ -2,11 +2,19 @@ package app.insti.api.model;
import
android.support.annotation.NonNull
;
import
com.google.gson.Gson
;
import
com.google.gson.annotations.SerializedName
;
public
class
Notification
{
@NonNull
()
import
app.insti.Utils
;
import
app.insti.interfaces.CardInterface
;
public
class
Notification
implements
CardInterface
{
private
final
String
TYPE_EVENT
=
"event"
;
private
final
String
TYPE_NEWSENTRY
=
"newsentry"
;
private
final
String
TYPE_BLOG
=
"blogentry"
;
@NonNull
()
@SerializedName
(
"id"
)
private
Integer
notificationId
;
...
...
@@ -70,4 +78,55 @@ public class Notification {
public
void
setNotificationActor
(
Object
notificationActor
)
{
this
.
notificationActor
=
notificationActor
;
}
public
String
getTitle
()
{
if
(
isEvent
())
{
return
getEvent
().
getEventName
();
}
else
if
(
isNews
())
{
return
getNews
().
getTitle
();
}
else
if
(
isBlogPost
())
{
return
getBlogPost
().
getTitle
();
}
return
"Notification"
;
}
public
String
getSubtitle
()
{
return
getNotificationVerb
();
}
public
String
getAvatarUrl
()
{
if
(
isEvent
())
{
return
getEvent
().
getEventImageURL
();
}
else
if
(
isNews
())
{
return
getNews
().
getBody
().
getBodyImageURL
();
}
return
null
;
}
public
boolean
isEvent
()
{
return
getNotificationActorType
().
contains
(
TYPE_EVENT
);
}
public
boolean
isNews
()
{
return
getNotificationActorType
().
contains
(
TYPE_NEWSENTRY
);
}
public
boolean
isBlogPost
()
{
return
getNotificationActorType
().
contains
(
TYPE_BLOG
);
}
public
Event
getEvent
()
{
Gson
gson
=
Utils
.
gson
;
return
gson
.
fromJson
(
gson
.
toJson
(
getNotificationActor
()),
Event
.
class
);
}
public
NewsArticle
getNews
()
{
Gson
gson
=
Utils
.
gson
;
return
gson
.
fromJson
(
gson
.
toJson
(
getNotificationActor
()),
NewsArticle
.
class
);
}
public
PlacementBlogPost
getBlogPost
()
{
Gson
gson
=
Utils
.
gson
;
return
gson
.
fromJson
(
gson
.
toJson
(
getNotificationActor
()),
PlacementBlogPost
.
class
);
}
}
app/src/main/java/app/insti/api/model/Role.java
View file @
56efc43e
...
...
@@ -6,7 +6,9 @@ import com.google.gson.annotations.SerializedName;
import
java.util.List
;
public
class
Role
{
import
app.insti.interfaces.CardInterface
;
public
class
Role
implements
CardInterface
{
@NonNull
()
@SerializedName
(
"id"
)
private
String
roleID
;
...
...
@@ -118,4 +120,16 @@ public class Role {
public
void
setRoleUsersDetail
(
List
<
User
>
roleUsersDetail
)
{
this
.
roleUsersDetail
=
roleUsersDetail
;
}
public
String
getTitle
()
{
return
getRoleBodyDetails
().
getBodyName
();
}
public
String
getSubtitle
()
{
return
getRoleName
();
}
public
String
getAvatarUrl
()
{
return
getRoleBodyDetails
().
getBodyImageURL
();
}
}
app/src/main/java/app/insti/api/model/User.java
View file @
56efc43e
...
...
@@ -7,7 +7,9 @@ import com.google.gson.annotations.SerializedName;
import
java.util.List
;
public
class
User
{
import
app.insti.interfaces.CardInterface
;
public
class
User
implements
CardInterface
{
@NonNull
()
@SerializedName
(
"id"
)
private
String
userID
;
...
...
@@ -235,4 +237,20 @@ public class User {
public
String
toString
()
{
return
new
Gson
().
toJson
(
this
);
}
public
String
getTitle
()
{
return
getUserName
();
}
public
String
getSubtitle
()
{
if
(
getCurrentRole
()
==
null
||
getCurrentRole
().
equals
(
""
))
{
return
getUserLDAPId
();
}
else
{
return
getCurrentRole
();
}
}
public
String
getAvatarUrl
()
{
return
getUserProfilePictureUrl
();
}
}
app/src/main/java/app/insti/fragment/CalendarFragment.java
View file @
56efc43e
...
...
@@ -167,7 +167,7 @@ public class CalendarFragment extends BaseFragment {
if
(
feedAdapter
==
null
)
{
feedAdapter
=
new
FeedAdapter
(
filteredEvents
,
this
);
}
else
{
feedAdapter
.
set
Events
(
filteredEvents
);
feedAdapter
.
set
List
(
filteredEvents
);
feedAdapter
.
notifyDataSetChanged
();
}
...
...
app/src/main/java/app/insti/fragment/ExploreFragment.java
View file @
56efc43e
...
...
@@ -8,25 +8,28 @@ import android.support.v7.widget.RecyclerView;
import
android.support.v7.widget.Toolbar
;
import
android.text.Editable
;
import
android.text.TextWatcher
;
import
android.view.KeyEvent
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.inputmethod.EditorInfo
;
import
android.widget.EditText
;
import
android.widget.TextView
;
import
java.util.ArrayList
;
import
java.util.List
;
import
app.insti.R
;
import
app.insti.Utils
;
import
app.insti.adapter.BodyAdapter
;
import
app.insti.adapter.FeedAdapter
;
import
app.insti.adapter.UserAdapter
;
import
app.insti.activity.MainActivity
;
import
app.insti.adapter.GenericAdapter
;
import
app.insti.api.EmptyCallback
;
import
app.insti.api.RetrofitInterface
;
import
app.insti.api.model.Body
;
import
app.insti.api.model.Event
;
import
app.insti.api.model.User
;
import
app.insti.api.response.ExploreResponse
;
import
app.insti.interfaces.CardInterface
;
import
retrofit2.Call
;
import
retrofit2.Response
;
...
...
@@ -41,10 +44,11 @@ public class ExploreFragment extends Fragment {
private
static
List
<
Body
>
bodies
=
new
ArrayList
<>();
private
static
List
<
Event
>
events
=
new
ArrayList
<>();
private
static
List
<
User
>
users
=
new
ArrayList
<>();
private
static
List
<
CardInterface
>
cards
=
new
ArrayList
<>();
private
String
sessionId
;
private
BodyAdapter
bodyAdapter
;
private
FeedAdapter
eventsAdapter
;
private
UserAdapter
userAdapter
;
private
GenericAdapter
genericAdapter
;
private
String
currentQuery
=
null
;
...
...
@@ -75,11 +79,13 @@ public class ExploreFragment extends Fragment {
// Initialize
sessionId
=
Utils
.
getSessionIDHeader
();
initRecyclerView
s
();
initRecyclerView
();
Toolbar
toolbar
=
getActivity
().
findViewById
(
R
.
id
.
toolbar
);
toolbar
.
setTitle
(
"Explore"
);
final
EditText
searchEditText
=
getView
().
findViewById
(
R
.
id
.
explore_search
);
// Get all bodies
if
(
allBodies
.
size
()
==
0
)
{
RetrofitInterface
retrofitInterface
=
Utils
.
getRetrofitInterface
();
...
...
@@ -88,16 +94,32 @@ public class ExploreFragment extends Fragment {
public
void
onResponse
(
Call
<
List
<
Body
>>
call
,
Response
<
List
<
Body
>>
response
)
{
allBodies
=
response
.
body
();
bodies
=
allBodies
;
updateAdapter
s
(
allBodies
,
new
ArrayList
<
Event
>(),
new
ArrayList
<
User
>());
updateAdapter
(
allBodies
,
new
ArrayList
<
Event
>(),
new
ArrayList
<
User
>());
}
});
}
else
{
updateAdapters
(
allBodies
,
new
ArrayList
<
Event
>(),
new
ArrayList
<
User
>());
// Check if search box is not empty
if
(
searchEditText
.
getText
()
!=
null
&&
!
searchEditText
.
getText
().
toString
().
equals
(
""
))
{
updateAdapter
(
bodies
,
events
,
users
);
}
else
{
updateAdapter
(
allBodies
,
new
ArrayList
<
Event
>(),
new
ArrayList
<
User
>());
}
getView
().
findViewById
(
R
.
id
.
loadingPanel
).
setVisibility
(
View
.
GONE
);
}
// Close keyboard on search click
searchEditText
.
setOnEditorActionListener
(
new
TextView
.
OnEditorActionListener
()
{
@Override
public
boolean
onEditorAction
(
TextView
v
,
int
actionId
,
KeyEvent
event
)
{
if
(
actionId
==
EditorInfo
.
IME_ACTION_SEARCH
)
{
MainActivity
.
hideKeyboard
(
getActivity
());
return
true
;
}
return
false
;
}
});
// Search on text change in search
final
EditText
searchEditText
=
getView
().
findViewById
(
R
.
id
.
explore_search
);
searchEditText
.
addTextChangedListener
(
new
TextWatcher
()
{
@Override
public
void
beforeTextChanged
(
CharSequence
s
,
int
start
,
int
count
,
int
after
)
{
...
...
@@ -115,7 +137,7 @@ public class ExploreFragment extends Fragment {
if
(
currentQuery
.
length
()
>=
3
)
{
doSearch
(
searchEditText
.
getText
().
toString
());
}
else
if
(
currentQuery
.
length
()
==
0
)
{
updateAdapter
s
(
allBodies
,
new
ArrayList
<
Event
>(),
new
ArrayList
<
User
>());
updateAdapter
(
allBodies
,
new
ArrayList
<
Event
>(),
new
ArrayList
<
User
>());
}
}
});
...
...
@@ -151,45 +173,34 @@ public class ExploreFragment extends Fragment {
bodies
=
response
.
body
().
getBodies
();
events
=
response
.
body
().
getEvents
();
users
=
response
.
body
().
getUsers
();
updateAdapter
s
(
bodies
,
events
,
users
);
updateAdapter
(
bodies
,
events
,
users
);
}
});
}
private
void
updateAdapter
s
(
List
<
Body
>
bodies
,
List
<
Event
>
events
,
List
<
User
>
users
)
{
private
void
updateAdapter
(
List
<
Body
>
bodies
,
List
<
Event
>
events
,
List
<
User
>
users
)
{
if
(
getActivity
()
==
null
||
getView
()
==
null
)
return
;
// Make spinner gone
getView
().
findViewById
(
R
.
id
.
loadingPanel
).
setVisibility
(
View
.
GONE
);
// Set adapters data
bodyAdapter
.
setBodyList
(
bodies
);
eventsAdapter
.
setEvents
(
events
);
userAdapter
.
setUserList
(
users
);
// Build cards
cards
.
clear
();
cards
.
addAll
(
bodies
);
cards
.
addAll
(
events
);
cards
.
addAll
(
users
);
genericAdapter
.
setList
(
cards
);
// Notify all adapters
bodyAdapter
.
notifyDataSetChanged
();
eventsAdapter
.
notifyDataSetChanged
();
userAdapter
.
notifyDataSetChanged
();
// Notify adapter
genericAdapter
.
notifyDataSetChanged
();
}
public
void
initRecyclerView
s
()
{
public
void
initRecyclerView
()
{
if
(
getActivity
()
==
null
||
getView
()
==
null
)
return
;
// Bodies
RecyclerView
bodiesRecyclerView
=
getView
().
findViewById
(
R
.
id
.
explore_body_recycler_view
);
bodyAdapter
=
new
BodyAdapter
(
bodies
,
this
);
bodiesRecyclerView
.
setAdapter
(
bodyAdapter
);
bodiesRecyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
getContext
()));
// Events
RecyclerView
eventsRecyclerView
=
getView
().
findViewById
(
R
.
id
.
explore_event_recycler_view
);
eventsAdapter
=
new
FeedAdapter
(
events
,
this
);
eventsRecyclerView
.
setAdapter
(
eventsAdapter
);
eventsRecyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
getContext
()));
// Users
RecyclerView
usersRecyclerView
=
getView
().
findViewById
(
R
.
id
.
explore_user_recycler_view
);
userAdapter
=
new
UserAdapter
(
users
,
this
);
usersRecyclerView
.
setAdapter
(
userAdapter
);
usersRecyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
getContext
()));
RecyclerView
bodiesRecyclerView
=
getView
().
findViewById
(
R
.
id
.
explore_recycler_view
);
genericAdapter
=
new
GenericAdapter
(
cards
,
this
);
bodiesRecyclerView
.
setAdapter
(
genericAdapter
);
bodiesRecyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
getContext
()));
}
}
\ No newline at end of file
app/src/main/java/app/insti/fragment/FeedFragment.java
View file @
56efc43e
...
...
@@ -159,7 +159,7 @@ public class FeedFragment extends BaseFragment {
if
(
feedAdapter
==
null
)
{
feedAdapter
=
new
FeedAdapter
(
events
,
this
);
}
else
{
feedAdapter
.
set
Events
(
events
);
feedAdapter
.
set
List
(
events
);
feedAdapter
.
notifyDataSetChanged
();
}
...
...
app/src/main/java/app/insti/fragment/NotificationsFragment.java
View file @
56efc43e
...
...
@@ -10,19 +10,13 @@ import android.view.LayoutInflater;
import
android.view.View
;
import
android.view.ViewGroup
;
import
com.google.gson.Gson
;
import
java.util.List
;
import
app.insti.R
;
import
app.insti.Utils
;
import
app.insti.adapter.NotificationsAdapter
;
import
app.insti.api.EmptyCallback
;
import
app.insti.api.RetrofitInterface
;
import
app.insti.api.model.Event
;
import
app.insti.api.model.Notification
;
import
app.insti.api.model.PlacementBlogPost
;
import
app.insti.interfaces.ItemClickListener
;
import
retrofit2.Call
;
import
retrofit2.Callback
;
import
retrofit2.Response
;
...
...
@@ -78,36 +72,7 @@ public class NotificationsFragment extends BaseFragment {
/* Hide loader */
getActivity
().
findViewById
(
R
.
id
.
loadingPanel
).
setVisibility
(
View
.
GONE
);
NotificationsAdapter
notificationsAdapter
=
new
NotificationsAdapter
(
notifications
,
new
ItemClickListener
()
{
@Override
public
void
onItemClick
(
View
v
,
int
position
)
{
/* Get the notification */
Notification
notification
=
notifications
.
get
(
position
);
/* Mark notification read */
RetrofitInterface
retrofitInterface
=
Utils
.
getRetrofitInterface
();
String
sessId
=
Utils
.
getSessionIDHeader
();
retrofitInterface
.
markNotificationRead
(
sessId
,
notification
.
getNotificationId
().
toString
()).
enqueue
(
new
EmptyCallback
<
Void
>());
/* Open event */
if
(
notification
.
getNotificationActorType
().
contains
(
"event"
))
{
Gson
gson
=
new
Gson
();
Event
event
=
gson
.
fromJson
(
gson
.
toJson
(
notification
.
getNotificationActor
()),
Event
.
class
)
;
Utils
.
openEventFragment
(
event
,
getActivity
());
}
else
if
(
notification
.
getNotificationActorType
().
contains
(
"newsentry"
))
{
NewsFragment
newsFragment
=
new
NewsFragment
();
Utils
.
updateFragment
(
newsFragment
,
getActivity
());
}
else
if
(
notification
.
getNotificationActorType
().
contains
(
"blogentry"
))
{
Gson
gson
=
new
Gson
();
PlacementBlogPost
post
=
gson
.
fromJson
(
gson
.
toJson
(
notification
.
getNotificationActor
()),
PlacementBlogPost
.
class
);
if
(
post
.
getLink
().
contains
(
"training"
))
{
Utils
.
updateFragment
(
new
TrainingBlogFragment
(),
getActivity
());
}
else
{
Utils
.
updateFragment
(
new
PlacementBlogFragment
(),
getActivity
());
}
}
}
});
NotificationsAdapter
notificationsAdapter
=
new
NotificationsAdapter
(
notifications
,
this
);
notificationsRecyclerView
=
(
RecyclerView
)
getActivity
().
findViewById
(
R
.
id
.
notifications_recycler_view
);
notificationsRecyclerView
.
setAdapter
(
notificationsAdapter
);
notificationsRecyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
getContext
()));
...
...
app/src/main/java/app/insti/interfaces/CardInterface.java
0 → 100644
View file @
56efc43e
package
app.insti.interfaces
;
public
interface
CardInterface
{
String
getTitle
();
String
getSubtitle
();
String
getAvatarUrl
();
}
app/src/main/res/drawable/lotus_placeholder.png
0 → 100644
View file @
56efc43e
10.6 KB
app/src/main/res/layout/fragment_explore.xml
View file @
56efc43e
...
...
@@ -23,13 +23,9 @@
android:paddingRight=
"6dp"
android:paddingTop=
"3dp"
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"
>
android:textColorHint=
"@color/primaryTextColor"
android:imeOptions=
"actionSearch"
android:inputType=
"text"
/>
<LinearLayout
android:layout_width=
"match_parent"
...
...
@@ -37,26 +33,11 @@
android:orientation=
"vertical"
>
<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.support.v7.widget.RecyclerView
android:id=
"@+id/explore_event_recycler_view"
android:id=
"@+id/explore_recycler_view"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:nestedScrollingEnabled=
"false"
/>
<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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment