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
e1f4a6a2
Commit
e1f4a6a2
authored
Sep 30, 2018
by
Sajal Narang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Generify Placement, Training, News fragments
parent
7c0222ac
Changes
29
Show whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
256 additions
and
470 deletions
+256
-470
app/src/main/java/app/insti/adapter/BodyAdapter.java
app/src/main/java/app/insti/adapter/BodyAdapter.java
+1
-1
app/src/main/java/app/insti/adapter/FeedAdapter.java
app/src/main/java/app/insti/adapter/FeedAdapter.java
+1
-1
app/src/main/java/app/insti/adapter/NewsAdapter.java
app/src/main/java/app/insti/adapter/NewsAdapter.java
+9
-5
app/src/main/java/app/insti/adapter/NotificationsAdapter.java
...src/main/java/app/insti/adapter/NotificationsAdapter.java
+1
-1
app/src/main/java/app/insti/adapter/PlacementBlogAdapter.java
...src/main/java/app/insti/adapter/PlacementBlogAdapter.java
+4
-2
app/src/main/java/app/insti/adapter/RoleAdapter.java
app/src/main/java/app/insti/adapter/RoleAdapter.java
+1
-1
app/src/main/java/app/insti/adapter/TrainingBlogAdapter.java
app/src/main/java/app/insti/adapter/TrainingBlogAdapter.java
+4
-2
app/src/main/java/app/insti/adapter/UserAdapter.java
app/src/main/java/app/insti/adapter/UserAdapter.java
+1
-1
app/src/main/java/app/insti/data/NewsArticle.java
app/src/main/java/app/insti/data/NewsArticle.java
+3
-1
app/src/main/java/app/insti/data/PlacementBlogPost.java
app/src/main/java/app/insti/data/PlacementBlogPost.java
+3
-1
app/src/main/java/app/insti/data/TrainingBlogPost.java
app/src/main/java/app/insti/data/TrainingBlogPost.java
+3
-1
app/src/main/java/app/insti/fragment/BodyFragment.java
app/src/main/java/app/insti/fragment/BodyFragment.java
+1
-2
app/src/main/java/app/insti/fragment/BodyRecyclerViewFragment.java
...ain/java/app/insti/fragment/BodyRecyclerViewFragment.java
+1
-1
app/src/main/java/app/insti/fragment/CalendarFragment.java
app/src/main/java/app/insti/fragment/CalendarFragment.java
+1
-2
app/src/main/java/app/insti/fragment/EventFragment.java
app/src/main/java/app/insti/fragment/EventFragment.java
+1
-2
app/src/main/java/app/insti/fragment/EventRecyclerViewFragment.java
...in/java/app/insti/fragment/EventRecyclerViewFragment.java
+1
-1
app/src/main/java/app/insti/fragment/ExploreFragment.java
app/src/main/java/app/insti/fragment/ExploreFragment.java
+1
-2
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/MyEventsFragment.java
app/src/main/java/app/insti/fragment/MyEventsFragment.java
+1
-2
app/src/main/java/app/insti/fragment/NewsFragment.java
app/src/main/java/app/insti/fragment/NewsFragment.java
+10
-155
app/src/main/java/app/insti/fragment/NotificationsFragment.java
...c/main/java/app/insti/fragment/NotificationsFragment.java
+1
-2
app/src/main/java/app/insti/fragment/PlacementBlogFragment.java
...c/main/java/app/insti/fragment/PlacementBlogFragment.java
+11
-140
app/src/main/java/app/insti/fragment/RecyclerViewFragment.java
...rc/main/java/app/insti/fragment/RecyclerViewFragment.java
+163
-1
app/src/main/java/app/insti/fragment/TrainingBlogFragment.java
...rc/main/java/app/insti/fragment/TrainingBlogFragment.java
+11
-139
app/src/main/java/app/insti/fragment/UserFragment.java
app/src/main/java/app/insti/fragment/UserFragment.java
+1
-2
app/src/main/java/app/insti/interfaces/Browsable.java
app/src/main/java/app/insti/interfaces/Browsable.java
+5
-0
app/src/main/java/app/insti/interfaces/ItemClickListener.java
...src/main/java/app/insti/interfaces/ItemClickListener.java
+1
-1
app/src/main/java/app/insti/interfaces/Readable.java
app/src/main/java/app/insti/interfaces/Readable.java
+7
-0
app/src/main/java/app/insti/interfaces/Writable.java
app/src/main/java/app/insti/interfaces/Writable.java
+7
-0
No files found.
app/src/main/java/app/insti/adapter/BodyAdapter.java
View file @
e1f4a6a2
...
...
@@ -13,7 +13,7 @@ import com.squareup.picasso.Picasso;
import
java.util.List
;
import
app.insti.Constants
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.data.Body
;
...
...
app/src/main/java/app/insti/adapter/FeedAdapter.java
View file @
e1f4a6a2
...
...
@@ -18,7 +18,7 @@ import java.util.Calendar;
import
app.insti.Constants
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.data.Event
;
import
app.insti.data.Venue
;
...
...
app/src/main/java/app/insti/adapter/NewsAdapter.java
View file @
e1f4a6a2
...
...
@@ -16,13 +16,15 @@ import java.util.Date;
import
java.util.List
;
import
java.util.Locale
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.interfaces.Readable
;
import
app.insti.interfaces.Writable
;
import
app.insti.data.NewsArticle
;
import
app.insti.fragment.NewsFragment
;
import
ru.noties.markwon.Markwon
;
public
class
NewsAdapter
extends
RecyclerView
.
Adapter
<
RecyclerView
.
ViewHolder
>
{
public
class
NewsAdapter
extends
RecyclerView
.
Adapter
<
RecyclerView
.
ViewHolder
>
implements
Readable
<
NewsArticle
>,
Writable
<
NewsArticle
>
{
private
final
int
VIEW_ITEM
=
1
;
private
final
int
VIEW_PROG
=
0
;
...
...
@@ -35,12 +37,14 @@ public class NewsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
this
.
itemClickListener
=
itemClickListener
;
}
public
List
<
NewsArticle
>
getNewsArticles
()
{
@Override
public
List
<
NewsArticle
>
getPosts
()
{
return
newsArticles
;
}
public
void
setNewsArticles
(
List
<
NewsArticle
>
newsArticles
)
{
this
.
newsArticles
=
newsArticles
;
@Override
public
void
setPosts
(
List
<
NewsArticle
>
posts
)
{
this
.
newsArticles
=
posts
;
}
@NonNull
...
...
app/src/main/java/app/insti/adapter/NotificationsAdapter.java
View file @
e1f4a6a2
...
...
@@ -14,7 +14,7 @@ import com.squareup.picasso.Picasso;
import
java.util.List
;
import
app.insti.Constants
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.data.Event
;
import
app.insti.data.NewsArticle
;
...
...
app/src/main/java/app/insti/adapter/PlacementBlogAdapter.java
View file @
e1f4a6a2
...
...
@@ -15,13 +15,15 @@ import java.util.Date;
import
java.util.List
;
import
java.util.Locale
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.data.PlacementBlogPost
;
import
app.insti.fragment.PlacementBlogFragment
;
import
app.insti.interfaces.Readable
;
import
app.insti.interfaces.Writable
;
import
ru.noties.markwon.Markwon
;
public
class
PlacementBlogAdapter
extends
RecyclerView
.
Adapter
<
RecyclerView
.
ViewHolder
>
{
public
class
PlacementBlogAdapter
extends
RecyclerView
.
Adapter
<
RecyclerView
.
ViewHolder
>
implements
Readable
<
PlacementBlogPost
>,
Writable
<
PlacementBlogPost
>
{
private
final
int
VIEW_ITEM
=
1
;
private
final
int
VIEW_PROG
=
0
;
private
List
<
PlacementBlogPost
>
posts
;
...
...
app/src/main/java/app/insti/adapter/RoleAdapter.java
View file @
e1f4a6a2
...
...
@@ -13,7 +13,7 @@ import com.squareup.picasso.Picasso;
import
java.util.List
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.data.Body
;
import
app.insti.data.Role
;
...
...
app/src/main/java/app/insti/adapter/TrainingBlogAdapter.java
View file @
e1f4a6a2
...
...
@@ -15,13 +15,15 @@ import java.util.Date;
import
java.util.List
;
import
java.util.Locale
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.data.TrainingBlogPost
;
import
app.insti.fragment.TrainingBlogFragment
;
import
app.insti.interfaces.Readable
;
import
app.insti.interfaces.Writable
;
import
ru.noties.markwon.Markwon
;
public
class
TrainingBlogAdapter
extends
RecyclerView
.
Adapter
<
RecyclerView
.
ViewHolder
>
{
public
class
TrainingBlogAdapter
extends
RecyclerView
.
Adapter
<
RecyclerView
.
ViewHolder
>
implements
Readable
<
TrainingBlogPost
>,
Writable
<
TrainingBlogPost
>
{
private
final
int
VIEW_ITEM
=
1
;
private
final
int
VIEW_PROG
=
0
;
...
...
app/src/main/java/app/insti/adapter/UserAdapter.java
View file @
e1f4a6a2
...
...
@@ -12,7 +12,7 @@ import com.squareup.picasso.Picasso;
import
java.util.List
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.data.User
;
...
...
app/src/main/java/app/insti/data/NewsArticle.java
View file @
e1f4a6a2
...
...
@@ -6,7 +6,9 @@ import com.google.gson.annotations.SerializedName;
import
java.sql.Timestamp
;
public
class
NewsArticle
{
import
app.insti.interfaces.Browsable
;
public
class
NewsArticle
implements
Browsable
{
@NonNull
()
@SerializedName
(
"id"
)
private
String
articleID
;
...
...
app/src/main/java/app/insti/data/PlacementBlogPost.java
View file @
e1f4a6a2
...
...
@@ -6,7 +6,9 @@ import com.google.gson.annotations.SerializedName;
import
java.sql.Timestamp
;
public
class
PlacementBlogPost
{
import
app.insti.interfaces.Browsable
;
public
class
PlacementBlogPost
implements
Browsable
{
@NonNull
()
@SerializedName
(
"id"
)
private
String
postID
;
...
...
app/src/main/java/app/insti/data/TrainingBlogPost.java
View file @
e1f4a6a2
...
...
@@ -6,7 +6,9 @@ import com.google.gson.annotations.SerializedName;
import
java.sql.Timestamp
;
public
class
TrainingBlogPost
{
import
app.insti.interfaces.Browsable
;
public
class
TrainingBlogPost
implements
Browsable
{
@NonNull
()
@SerializedName
(
"id"
)
private
String
postID
;
...
...
app/src/main/java/app/insti/fragment/BodyFragment.java
View file @
e1f4a6a2
...
...
@@ -10,7 +10,6 @@ import android.graphics.Color;
import
android.graphics.Point
;
import
android.graphics.Rect
;
import
android.net.Uri
;
import
android.os.AsyncTask
;
import
android.os.Bundle
;
import
android.support.design.widget.FloatingActionButton
;
import
android.support.v4.app.Fragment
;
...
...
@@ -37,7 +36,7 @@ import java.util.ArrayList;
import
java.util.List
;
import
app.insti.Constants
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.ShareURLMaker
;
import
app.insti.activity.MainActivity
;
...
...
app/src/main/java/app/insti/fragment/BodyRecyclerViewFragment.java
View file @
e1f4a6a2
...
...
@@ -16,7 +16,7 @@ import com.google.gson.reflect.TypeToken;
import
java.util.List
;
import
app.insti.Constants
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.adapter.BodyAdapter
;
import
app.insti.data.Body
;
...
...
app/src/main/java/app/insti/fragment/CalendarFragment.java
View file @
e1f4a6a2
...
...
@@ -28,12 +28,11 @@ import java.util.List;
import
java.util.TimeZone
;
import
app.insti.Constants
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.activity.MainActivity
;
import
app.insti.adapter.FeedAdapter
;
import
app.insti.api.RetrofitInterface
;
import
app.insti.api.ServiceGenerator
;
import
app.insti.api.model.NewsFeedResponse
;
import
app.insti.data.Event
;
import
retrofit2.Call
;
...
...
app/src/main/java/app/insti/fragment/EventFragment.java
View file @
e1f4a6a2
...
...
@@ -10,7 +10,6 @@ import android.graphics.Color;
import
android.graphics.Point
;
import
android.graphics.Rect
;
import
android.net.Uri
;
import
android.os.AsyncTask
;
import
android.os.Bundle
;
import
android.support.design.widget.FloatingActionButton
;
import
android.support.v4.app.Fragment
;
...
...
@@ -43,7 +42,7 @@ import java.util.Date;
import
java.util.List
;
import
app.insti.Constants
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.ShareURLMaker
;
import
app.insti.activity.MainActivity
;
...
...
app/src/main/java/app/insti/fragment/EventRecyclerViewFragment.java
View file @
e1f4a6a2
...
...
@@ -15,7 +15,7 @@ import com.google.gson.reflect.TypeToken;
import
java.util.List
;
import
app.insti.Constants
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.adapter.FeedAdapter
;
import
app.insti.data.Event
;
...
...
app/src/main/java/app/insti/fragment/ExploreFragment.java
View file @
e1f4a6a2
...
...
@@ -20,14 +20,13 @@ import java.util.ArrayList;
import
java.util.List
;
import
app.insti.Constants
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.activity.MainActivity
;
import
app.insti.adapter.BodyAdapter
;
import
app.insti.adapter.FeedAdapter
;
import
app.insti.adapter.UserAdapter
;
import
app.insti.api.RetrofitInterface
;
import
app.insti.api.ServiceGenerator
;
import
app.insti.api.model.ExploreResponse
;
import
app.insti.data.Body
;
import
app.insti.data.Event
;
...
...
app/src/main/java/app/insti/fragment/FeedFragment.java
View file @
e1f4a6a2
...
...
@@ -21,7 +21,7 @@ import java.util.List;
import
app.insti.ActivityBuffer
;
import
app.insti.Constants
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.activity.MainActivity
;
import
app.insti.adapter.FeedAdapter
;
...
...
app/src/main/java/app/insti/fragment/MyEventsFragment.java
View file @
e1f4a6a2
...
...
@@ -2,7 +2,6 @@ package app.insti.fragment;
import
android.app.Activity
;
import
android.os.AsyncTask
;
import
android.os.Bundle
;
import
android.support.design.widget.FloatingActionButton
;
import
android.support.v4.app.Fragment
;
...
...
@@ -22,7 +21,7 @@ import java.util.List;
import
app.insti.ActivityBuffer
;
import
app.insti.Constants
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.activity.MainActivity
;
import
app.insti.adapter.FeedAdapter
;
...
...
app/src/main/java/app/insti/fragment/NewsFragment.java
View file @
e1f4a6a2
package
app.insti.fragment
;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.net.Uri
;
import
android.os.AsyncTask
;
import
android.os.Bundle
;
import
android.support.v4.app.Fragment
;
import
android.support.v4.widget.SwipeRefreshLayout
;
import
android.support.v7.widget.LinearLayoutManager
;
import
android.support.v7.widget.RecyclerView
;
import
android.support.v7.widget.SearchView
;
import
android.support.v7.widget.Toolbar
;
import
android.text.TextUtils
;
import
android.view.LayoutInflater
;
import
android.view.Menu
;
import
android.view.MenuInflater
;
import
android.view.MenuItem
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
java.util.ArrayList
;
import
java.util.List
;
import
app.insti.ActivityBuffer
;
import
app.insti.Constants
;
import
app.insti.ItemClickListener
;
import
app.insti.R
;
import
app.insti.activity.MainActivity
;
import
app.insti.adapter.NewsAdapter
;
import
app.insti.api.RetrofitInterface
;
import
app.insti.data.NewsArticle
;
import
retrofit2.Call
;
import
retrofit2.Callback
;
import
retrofit2.Response
;
/**
* A simple {@link Fragment} subclass.
*/
public
class
NewsFragment
extends
BaseFragment
{
public
static
boolean
showLoader
=
true
;
private
RecyclerView
newsRecyclerView
;
private
SwipeRefreshLayout
newsSwipeRefreshLayout
;
private
boolean
freshNewsDisplayed
=
false
;
private
String
searchQuery
;
public
class
NewsFragment
extends
RecyclerViewFragment
<
NewsArticle
,
NewsAdapter
>
{
public
NewsFragment
()
{
// Required empty public constructor
...
...
@@ -64,145 +41,23 @@ public class NewsFragment extends BaseFragment {
Toolbar
toolbar
=
getActivity
().
findViewById
(
R
.
id
.
toolbar
);
toolbar
.
setTitle
(
"News"
);
setHasOptionsMenu
(
true
);
updateData
();
updateNews
();
newsSwipeRefreshLayout
=
getActivity
().
findViewById
(
R
.
id
.
news_swipe_refresh_layout
);
newsSwipeRefreshLayout
.
setOnRefreshListener
(
new
SwipeRefreshLayout
.
OnRefreshListener
()
{
postType
=
NewsArticle
.
class
;
adapterType
=
NewsAdapter
.
class
;
recyclerView
=
getActivity
().
findViewById
(
R
.
id
.
news_recycler_view
);
swipeRefreshLayout
=
getActivity
().
findViewById
(
R
.
id
.
news_swipe_refresh_layout
);
swipeRefreshLayout
.
setOnRefreshListener
(
new
SwipeRefreshLayout
.
OnRefreshListener
()
{
@Override
public
void
onRefresh
()
{
updateNews
();
}
});
}
private
void
updateNews
()
{
RetrofitInterface
retrofitInterface
=
((
MainActivity
)
getActivity
()).
getRetrofitInterface
();
retrofitInterface
.
getNews
(
"sessionid="
+
getArguments
().
getString
(
Constants
.
SESSION_ID
),
0
,
20
,
searchQuery
).
enqueue
(
new
Callback
<
List
<
NewsArticle
>>()
{
@Override
public
void
onResponse
(
Call
<
List
<
NewsArticle
>>
call
,
Response
<
List
<
NewsArticle
>>
response
)
{
if
(
response
.
isSuccessful
())
{
List
<
NewsArticle
>
articles
=
response
.
body
();
freshNewsDisplayed
=
true
;
displayNews
(
articles
);
}
//Server Error
newsSwipeRefreshLayout
.
setRefreshing
(
false
);
}
@Override
public
void
onFailure
(
Call
<
List
<
NewsArticle
>>
call
,
Throwable
t
)
{
//Network Error
newsSwipeRefreshLayout
.
setRefreshing
(
false
);
}
});
}
private
void
displayNews
(
final
List
<
NewsArticle
>
result
)
{
/* Skip if we're already destroyed */
if
(
getActivity
()
==
null
||
getView
()
==
null
)
return
;
final
NewsAdapter
newsAdapter
=
new
NewsAdapter
(
result
,
new
ItemClickListener
()
{
@Override
public
void
onItemClick
(
View
v
,
int
position
)
{
String
link
=
result
.
get
(
position
).
getLink
();
if
(
link
!=
null
&&
!
link
.
isEmpty
())
openWebURL
(
link
);
}
});
getActivityBuffer
().
safely
(
new
ActivityBuffer
.
IRunnable
()
{
@Override
public
void
run
(
Activity
pActivity
)
{
try
{
newsRecyclerView
=
getActivity
().
findViewById
(
R
.
id
.
news_recycler_view
);
newsRecyclerView
.
setAdapter
(
newsAdapter
);
newsRecyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
getContext
()));
newsRecyclerView
.
addOnScrollListener
(
new
RecyclerView
.
OnScrollListener
()
{
// multiple calls should not be made
boolean
loading
=
false
;
@Override
public
void
onScrolled
(
RecyclerView
recyclerView
,
int
dx
,
int
dy
)
{
if
(
dy
>
0
)
{
LinearLayoutManager
layoutManager
=
(
LinearLayoutManager
)
newsRecyclerView
.
getLayoutManager
();
if
(((
layoutManager
.
getChildCount
()
+
layoutManager
.
findFirstVisibleItemPosition
())
>
(
layoutManager
.
getItemCount
()
-
5
))
&&
(!
loading
))
{
loading
=
true
;
View
v
=
getActivity
().
findViewById
(
R
.
id
.
training_feed_swipe_refresh_layout
);
RetrofitInterface
retrofitInterface
=
((
MainActivity
)
getActivity
()).
getRetrofitInterface
();
retrofitInterface
.
getNews
(
"sessionid="
+
getArguments
().
getString
(
Constants
.
SESSION_ID
),
layoutManager
.
getItemCount
(),
10
,
searchQuery
).
enqueue
(
new
Callback
<
List
<
NewsArticle
>>()
{
@Override
public
void
onResponse
(
Call
<
List
<
NewsArticle
>>
call
,
Response
<
List
<
NewsArticle
>>
response
)
{
loading
=
false
;
List
<
NewsArticle
>
newsArticles
=
(
ArrayList
<
NewsArticle
>)
newsAdapter
.
getNewsArticles
();
newsArticles
.
addAll
(
response
.
body
());
if
(
response
.
body
().
size
()
==
0
)
{
showLoader
=
false
;
}
newsAdapter
.
setNewsArticles
(
newsArticles
);
newsAdapter
.
notifyDataSetChanged
();
// new updateDatabase().execute(blogPosts);
}
@Override
public
void
onFailure
(
Call
<
List
<
NewsArticle
>>
call
,
Throwable
t
)
{
loading
=
false
;
}
});
}
}
}
});
}
catch
(
NullPointerException
e
)
{
e
.
printStackTrace
();
}
updateData
();
}
});
getActivity
().
findViewById
(
R
.
id
.
loadingPanel
).
setVisibility
(
View
.
GONE
);
}
private
void
openWebURL
(
String
URL
)
{
Intent
browse
=
new
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
URL
));
startActivity
(
browse
);
}
@Override
public
void
onCreateOptionsMenu
(
Menu
menu
,
MenuInflater
inflater
)
{
inflater
.
inflate
(
R
.
menu
.
search_view_menu
,
menu
);
MenuItem
item
=
menu
.
findItem
(
R
.
id
.
action_search
);
SearchView
sv
=
new
SearchView
(((
MainActivity
)
getActivity
()).
getSupportActionBar
().
getThemedContext
());
item
.
setShowAsAction
(
MenuItem
.
SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
|
MenuItem
.
SHOW_AS_ACTION_IF_ROOM
);
item
.
setActionView
(
sv
);
sv
.
setOnQueryTextListener
(
new
SearchView
.
OnQueryTextListener
()
{
@Override
public
boolean
onQueryTextSubmit
(
String
query
)
{
performSearch
(
query
);
return
false
;
}
@Override
public
boolean
onQueryTextChange
(
String
newText
)
{
if
(
TextUtils
.
isEmpty
(
newText
))
{
//Text is cleared, do your thing
searchQuery
=
null
;
updateNews
();
showLoader
=
true
;
return
true
;
}
else
if
(
newText
.
length
()
>=
3
)
{
performSearch
(
newText
);
return
true
;
}
return
false
;
}
});
}
private
void
performSearch
(
String
query
)
{
searchQuery
=
query
;
updateNews
();
showLoader
=
false
;
Call
<
List
<
NewsArticle
>>
getCall
(
RetrofitInterface
retrofitInterface
,
String
sessionIDHeader
)
{
return
retrofitInterface
.
getNews
(
sessionIDHeader
,
0
,
20
,
searchQuery
);
}
}
app/src/main/java/app/insti/fragment/NotificationsFragment.java
View file @
e1f4a6a2
...
...
@@ -17,12 +17,11 @@ import com.google.gson.Gson;
import
java.util.List
;
import
app.insti.Constants
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.activity.MainActivity
;
import
app.insti.adapter.NotificationsAdapter
;
import
app.insti.api.RetrofitInterface
;
import
app.insti.api.ServiceGenerator
;
import
app.insti.data.Notification
;
import
app.insti.data.PlacementBlogPost
;
import
retrofit2.Call
;
...
...
app/src/main/java/app/insti/fragment/PlacementBlogFragment.java
View file @
e1f4a6a2
...
...
@@ -4,7 +4,6 @@ package app.insti.fragment;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.net.Uri
;
import
android.os.AsyncTask
;
import
android.os.Bundle
;
import
android.support.v4.app.Fragment
;
import
android.support.v4.widget.SwipeRefreshLayout
;
...
...
@@ -25,7 +24,7 @@ import java.util.List;
import
app.insti.ActivityBuffer
;
import
app.insti.Constants
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.activity.MainActivity
;
import
app.insti.adapter.PlacementBlogAdapter
;
...
...
@@ -38,15 +37,7 @@ import retrofit2.Response;
/**
* A simple {@link Fragment} subclass.
*/
public
class
PlacementBlogFragment
extends
BaseFragment
{
public
static
boolean
showLoader
=
true
;
private
RecyclerView
placementFeedRecyclerView
;
private
PlacementBlogAdapter
placementBlogAdapter
;
private
SwipeRefreshLayout
feedSwipeRefreshLayout
;
private
boolean
freshBlogDisplayed
=
false
;
private
String
searchQuery
;
public
class
PlacementBlogFragment
extends
RecyclerViewFragment
<
PlacementBlogPost
,
PlacementBlogAdapter
>
{
public
PlacementBlogFragment
()
{
// Required empty public constructor
...
...
@@ -66,143 +57,23 @@ public class PlacementBlogFragment extends BaseFragment {
Toolbar
toolbar
=
getActivity
().
findViewById
(
R
.
id
.
toolbar
);
toolbar
.
setTitle
(
"Placement Blog"
);
setHasOptionsMenu
(
true
);
updateData
();
updatePlacementFeed
();
feedSwipeRefreshLayout
=
getActivity
().
findViewById
(
R
.
id
.
placement_feed_swipe_refresh_layout
);
feedSwipeRefreshLayout
.
setOnRefreshListener
(
new
SwipeRefreshLayout
.
OnRefreshListener
()
{
postType
=
PlacementBlogPost
.
class
;
adapterType
=
PlacementBlogAdapter
.
class
;
recyclerView
=
getActivity
().
findViewById
(
R
.
id
.
placement_feed_recycler_view
);
swipeRefreshLayout
=
getActivity
().
findViewById
(
R
.
id
.
placement_feed_swipe_refresh_layout
);
swipeRefreshLayout
.
setOnRefreshListener
(
new
SwipeRefreshLayout
.
OnRefreshListener
()
{
@Override
public
void
onRefresh
()
{
updatePlacementFeed
();
}
});
}
private
void
updatePlacementFeed
()
{
RetrofitInterface
retrofitInterface
=
((
MainActivity
)
getActivity
()).
getRetrofitInterface
();
retrofitInterface
.
getPlacementBlogFeed
(
"sessionid="
+
getArguments
().
getString
(
Constants
.
SESSION_ID
),
0
,
20
,
searchQuery
).
enqueue
(
new
Callback
<
List
<
PlacementBlogPost
>>()
{
@Override
public
void
onResponse
(
Call
<
List
<
PlacementBlogPost
>>
call
,
Response
<
List
<
PlacementBlogPost
>>
response
)
{
if
(
response
.
isSuccessful
())
{
List
<
PlacementBlogPost
>
posts
=
response
.
body
();
freshBlogDisplayed
=
true
;
displayPlacementFeed
(
posts
);
}
//Server Error
feedSwipeRefreshLayout
.
setRefreshing
(
false
);
}
@Override
public
void
onFailure
(
Call
<
List
<
PlacementBlogPost
>>
call
,
Throwable
t
)
{
//Network Error
feedSwipeRefreshLayout
.
setRefreshing
(
false
);
updateData
();
}
});
}
private
void
displayPlacementFeed
(
final
List
<
PlacementBlogPost
>
result
)
{
/* Skip if we're already destroyed */
if
(
getActivity
()
==
null
||
getView
()
==
null
)
return
;
placementBlogAdapter
=
new
PlacementBlogAdapter
(
result
,
new
ItemClickListener
()
{
@Override
public
void
onItemClick
(
View
v
,
int
position
)
{
openWebURL
(
result
.
get
(
position
).
getLink
());
}
});
getActivityBuffer
().
safely
(
new
ActivityBuffer
.
IRunnable
()
{
@Override
public
void
run
(
Activity
pActivity
)
{
try
{
placementFeedRecyclerView
=
getActivity
().
findViewById
(
R
.
id
.
placement_feed_recycler_view
);
placementFeedRecyclerView
.
setAdapter
(
placementBlogAdapter
);
placementFeedRecyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
getContext
()));
placementFeedRecyclerView
.
addOnScrollListener
(
new
RecyclerView
.
OnScrollListener
()
{
// multiple calls should not be made
boolean
loading
=
false
;
@Override
public
void
onScrolled
(
RecyclerView
recyclerView
,
int
dx
,
int
dy
)
{
if
(
dy
>
0
)
{
LinearLayoutManager
layoutManager
=
(
LinearLayoutManager
)
placementFeedRecyclerView
.
getLayoutManager
();
if
(((
layoutManager
.
getChildCount
()
+
layoutManager
.
findFirstVisibleItemPosition
())
>
(
layoutManager
.
getItemCount
()
-
5
))
&&
(!
loading
))
{
loading
=
true
;
View
v
=
getActivity
().
findViewById
(
R
.
id
.
placement_feed_swipe_refresh_layout
);
RetrofitInterface
retrofitInterface
=
((
MainActivity
)
getActivity
()).
getRetrofitInterface
();
retrofitInterface
.
getPlacementBlogFeed
(
"sessionid="
+
getArguments
().
getString
(
Constants
.
SESSION_ID
),
layoutManager
.
getItemCount
(),
10
,
searchQuery
).
enqueue
(
new
Callback
<
List
<
PlacementBlogPost
>>()
{
@Override
public
void
onResponse
(
Call
<
List
<
PlacementBlogPost
>>
call
,
Response
<
List
<
PlacementBlogPost
>>
response
)
{
loading
=
false
;
List
<
PlacementBlogPost
>
blogPosts
=
(
ArrayList
<
PlacementBlogPost
>)
placementBlogAdapter
.
getPosts
();
blogPosts
.
addAll
(
response
.
body
());
if
(
response
.
body
().
size
()
==
0
)
{
showLoader
=
false
;
}
placementBlogAdapter
.
setPosts
(
blogPosts
);
placementBlogAdapter
.
notifyDataSetChanged
();
// new updateDatabase().execute(blogPosts);
}
@Override
public
void
onFailure
(
Call
<
List
<
PlacementBlogPost
>>
call
,
Throwable
t
)
{
loading
=
false
;
}
});
}
}
}
});
}
catch
(
NullPointerException
e
)
{
e
.
printStackTrace
();
}
}
});
getActivity
().
findViewById
(
R
.
id
.
loadingPanel
).
setVisibility
(
View
.
GONE
);
}
private
void
openWebURL
(
String
URL
)
{
Intent
browse
=
new
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
URL
));
startActivity
(
browse
);
}
@Override
public
void
onCreateOptionsMenu
(
Menu
menu
,
MenuInflater
inflater
)
{
inflater
.
inflate
(
R
.
menu
.
search_view_menu
,
menu
);
MenuItem
item
=
menu
.
findItem
(
R
.
id
.
action_search
);
SearchView
sv
=
new
SearchView
(((
MainActivity
)
getActivity
()).
getSupportActionBar
().
getThemedContext
());
item
.
setShowAsAction
(
MenuItem
.
SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
|
MenuItem
.
SHOW_AS_ACTION_IF_ROOM
);
item
.
setActionView
(
sv
);
sv
.
setOnQueryTextListener
(
new
SearchView
.
OnQueryTextListener
()
{
@Override
public
boolean
onQueryTextSubmit
(
String
query
)
{
performSearch
(
query
);
return
false
;
}
@Override
public
boolean
onQueryTextChange
(
String
newText
)
{
if
(
TextUtils
.
isEmpty
(
newText
))
{
//Text is cleared, do your thing
searchQuery
=
null
;
updatePlacementFeed
();
showLoader
=
true
;
return
true
;
}
else
if
(
newText
.
length
()
>=
3
)
{
performSearch
(
newText
);
return
true
;
}
return
false
;
}
});
}
private
void
performSearch
(
String
query
)
{
searchQuery
=
query
;
updatePlacementFeed
();
showLoader
=
false
;
Call
<
List
<
PlacementBlogPost
>>
getCall
(
RetrofitInterface
retrofitInterface
,
String
sessionIDHeader
)
{
return
retrofitInterface
.
getPlacementBlogFeed
(
sessionIDHeader
,
0
,
20
,
searchQuery
);
}
}
app/src/main/java/app/insti/fragment/RecyclerViewFragment.java
View file @
e1f4a6a2
package
app.insti.fragment
;
public
class
RecyclerViewFragment
{
import
android.app.Activity
;
import
android.content.Intent
;
import
android.net.Uri
;
import
android.support.v4.widget.SwipeRefreshLayout
;
import
android.support.v7.widget.LinearLayoutManager
;
import
android.support.v7.widget.RecyclerView
;
import
android.support.v7.widget.SearchView
;
import
android.text.TextUtils
;
import
android.view.Menu
;
import
android.view.MenuInflater
;
import
android.view.MenuItem
;
import
android.view.View
;
import
java.lang.reflect.InvocationTargetException
;
import
java.util.List
;
import
app.insti.ActivityBuffer
;
import
app.insti.api.RetrofitInterface
;
import
app.insti.interfaces.Browsable
;
import
app.insti.interfaces.ItemClickListener
;
import
app.insti.R
;
import
app.insti.interfaces.Readable
;
import
app.insti.interfaces.Writable
;
import
app.insti.activity.MainActivity
;
import
retrofit2.Call
;
import
retrofit2.Callback
;
import
retrofit2.Response
;
import
static
android
.
view
.
View
.
GONE
;
public
abstract
class
RecyclerViewFragment
<
T
extends
Browsable
,
S
extends
RecyclerView
.
Adapter
<
RecyclerView
.
ViewHolder
>
&
Readable
<
T
>
&
Writable
<
T
>>
extends
BaseFragment
{
public
static
boolean
showLoader
=
true
;
protected
RecyclerView
recyclerView
;
protected
Class
<
T
>
postType
;
protected
Class
<
S
>
adapterType
;
protected
SwipeRefreshLayout
swipeRefreshLayout
;
protected
String
searchQuery
;
protected
void
updateData
()
{
String
sessionIDHeader
=
((
MainActivity
)
getActivity
()).
getSessionIDHeader
();
RetrofitInterface
retrofitInterface
=
((
MainActivity
)
getActivity
()).
getRetrofitInterface
();
Call
<
List
<
T
>>
call
=
getCall
(
retrofitInterface
,
sessionIDHeader
);
call
.
enqueue
(
new
Callback
<
List
<
T
>>()
{
@Override
public
void
onResponse
(
Call
<
List
<
T
>>
call
,
Response
<
List
<
T
>>
response
)
{
if
(
response
.
isSuccessful
())
{
List
<
T
>
posts
=
response
.
body
();
displayData
(
posts
);
}
swipeRefreshLayout
.
setRefreshing
(
false
);
}
@Override
public
void
onFailure
(
Call
<
List
<
T
>>
call
,
Throwable
t
)
{
swipeRefreshLayout
.
setRefreshing
(
false
);
}
});
}
abstract
Call
<
List
<
T
>>
getCall
(
RetrofitInterface
retrofitInterface
,
String
sessionIDHeader
);
private
void
displayData
(
final
List
<
T
>
result
)
{
/* Skip if we're already destroyed */
if
(
getActivity
()
==
null
||
getView
()
==
null
)
return
;
try
{
final
S
s
=
adapterType
.
getDeclaredConstructor
(
List
.
class
,
ItemClickListener
.
class
).
newInstance
(
result
,
new
ItemClickListener
()
{
@Override
public
void
onItemClick
(
View
v
,
int
position
)
{
String
link
=
result
.
get
(
position
).
getLink
();
if
(
link
!=
null
&&
!
link
.
isEmpty
())
openWebURL
(
link
);
}
});
getActivityBuffer
().
safely
(
new
ActivityBuffer
.
IRunnable
()
{
@Override
public
void
run
(
Activity
pActivity
)
{
recyclerView
.
setAdapter
(
s
);
recyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
getContext
()));
recyclerView
.
addOnScrollListener
(
new
RecyclerView
.
OnScrollListener
()
{
boolean
loading
=
false
;
@Override
public
void
onScrolled
(
RecyclerView
recyclerView
,
int
dx
,
int
dy
)
{
if
(
dy
>
0
)
{
LinearLayoutManager
layoutManager
=
(
LinearLayoutManager
)
recyclerView
.
getLayoutManager
();
if
(((
layoutManager
.
getChildCount
()
+
layoutManager
.
findFirstVisibleItemPosition
())
>
(
layoutManager
.
getItemCount
()
-
5
))
&&
(!
loading
))
{
loading
=
true
;
String
sessionIDHeader
=
((
MainActivity
)
getActivity
()).
getSessionIDHeader
();
RetrofitInterface
retrofitInterface
=
((
MainActivity
)
getActivity
()).
getRetrofitInterface
();
Call
<
List
<
T
>>
call
=
getCall
(
retrofitInterface
,
sessionIDHeader
);
call
.
enqueue
(
new
Callback
<
List
<
T
>>()
{
@Override
public
void
onResponse
(
Call
<
List
<
T
>>
call
,
Response
<
List
<
T
>>
response
)
{
if
(
response
.
isSuccessful
())
{
loading
=
false
;
List
<
T
>
posts
=
s
.
getPosts
();
posts
.
addAll
(
response
.
body
());
if
(
response
.
body
().
size
()
==
0
)
{
showLoader
=
false
;
}
s
.
setPosts
(
posts
);
s
.
notifyDataSetChanged
();
}
}
@Override
public
void
onFailure
(
Call
<
List
<
T
>>
call
,
Throwable
t
)
{
loading
=
false
;
}
});
}
}
}
});
}
});
getActivity
().
findViewById
(
R
.
id
.
loadingPanel
).
setVisibility
(
GONE
);
}
catch
(
java
.
lang
.
InstantiationException
|
IllegalAccessException
|
NoSuchMethodException
|
InvocationTargetException
e
)
{
e
.
printStackTrace
();
}
}
private
void
openWebURL
(
String
URL
)
{
Intent
browse
=
new
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
URL
));
startActivity
(
browse
);
}
@Override
public
void
onCreateOptionsMenu
(
Menu
menu
,
MenuInflater
inflater
)
{
inflater
.
inflate
(
R
.
menu
.
search_view_menu
,
menu
);
MenuItem
item
=
menu
.
findItem
(
R
.
id
.
action_search
);
SearchView
sv
=
new
SearchView
(((
MainActivity
)
getActivity
()).
getSupportActionBar
().
getThemedContext
());
item
.
setShowAsAction
(
MenuItem
.
SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
|
MenuItem
.
SHOW_AS_ACTION_IF_ROOM
);
item
.
setActionView
(
sv
);
sv
.
setOnQueryTextListener
(
new
SearchView
.
OnQueryTextListener
()
{
@Override
public
boolean
onQueryTextSubmit
(
String
query
)
{
performSearch
(
query
);
return
false
;
}
@Override
public
boolean
onQueryTextChange
(
String
newText
)
{
if
(
TextUtils
.
isEmpty
(
newText
))
{
searchQuery
=
null
;
updateData
();
showLoader
=
true
;
return
true
;
}
else
if
(
newText
.
length
()
>=
3
)
{
performSearch
(
newText
);
return
true
;
}
return
false
;
}
});
}
private
void
performSearch
(
String
query
)
{
searchQuery
=
query
;
updateData
();
showLoader
=
false
;
}
}
app/src/main/java/app/insti/fragment/TrainingBlogFragment.java
View file @
e1f4a6a2
...
...
@@ -4,7 +4,6 @@ package app.insti.fragment;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.net.Uri
;
import
android.os.AsyncTask
;
import
android.os.Bundle
;
import
android.support.v4.app.Fragment
;
import
android.support.v4.widget.SwipeRefreshLayout
;
...
...
@@ -25,7 +24,7 @@ import java.util.List;
import
app.insti.ActivityBuffer
;
import
app.insti.Constants
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.activity.MainActivity
;
import
app.insti.adapter.TrainingBlogAdapter
;
...
...
@@ -38,14 +37,7 @@ import retrofit2.Response;
/**
* A simple {@link Fragment} subclass.
*/
public
class
TrainingBlogFragment
extends
BaseFragment
{
public
static
boolean
showLoader
=
true
;
private
RecyclerView
trainingFeedRecyclerView
;
private
SwipeRefreshLayout
feedSwipeRefreshLayout
;
private
boolean
freshBlogDisplayed
=
false
;
private
String
searchQuery
;
public
class
TrainingBlogFragment
extends
RecyclerViewFragment
<
TrainingBlogPost
,
TrainingBlogAdapter
>
{
public
TrainingBlogFragment
()
{
// Required empty public constructor
...
...
@@ -65,143 +57,23 @@ public class TrainingBlogFragment extends BaseFragment {
Toolbar
toolbar
=
getActivity
().
findViewById
(
R
.
id
.
toolbar
);
toolbar
.
setTitle
(
"Internship Blog"
);
setHasOptionsMenu
(
true
);
updateData
();
updateTrainingFeed
();
feedSwipeRefreshLayout
=
getActivity
().
findViewById
(
R
.
id
.
training_feed_swipe_refresh_layout
);
feedSwipeRefreshLayout
.
setOnRefreshListener
(
new
SwipeRefreshLayout
.
OnRefreshListener
()
{
postType
=
TrainingBlogPost
.
class
;
adapterType
=
TrainingBlogAdapter
.
class
;
recyclerView
=
getActivity
().
findViewById
(
R
.
id
.
training_feed_recycler_view
);
swipeRefreshLayout
=
getActivity
().
findViewById
(
R
.
id
.
training_feed_swipe_refresh_layout
);
swipeRefreshLayout
.
setOnRefreshListener
(
new
SwipeRefreshLayout
.
OnRefreshListener
()
{
@Override
public
void
onRefresh
()
{
updateTrainingFeed
();
}
});
}
private
void
updateTrainingFeed
()
{
RetrofitInterface
retrofitInterface
=
((
MainActivity
)
getActivity
()).
getRetrofitInterface
();
retrofitInterface
.
getTrainingBlogFeed
(
"sessionid="
+
getArguments
().
getString
(
Constants
.
SESSION_ID
),
0
,
20
,
searchQuery
).
enqueue
(
new
Callback
<
List
<
TrainingBlogPost
>>()
{
@Override
public
void
onResponse
(
Call
<
List
<
TrainingBlogPost
>>
call
,
Response
<
List
<
TrainingBlogPost
>>
response
)
{
if
(
response
.
isSuccessful
())
{
List
<
TrainingBlogPost
>
posts
=
response
.
body
();
freshBlogDisplayed
=
true
;
displayTrainingFeed
(
posts
);
}
//Server Error
feedSwipeRefreshLayout
.
setRefreshing
(
false
);
}
@Override
public
void
onFailure
(
Call
<
List
<
TrainingBlogPost
>>
call
,
Throwable
t
)
{
//Network Error
feedSwipeRefreshLayout
.
setRefreshing
(
false
);
updateData
();
}
});
}
private
void
displayTrainingFeed
(
final
List
<
TrainingBlogPost
>
result
)
{
/* Skip if we're already destroyed */
if
(
getActivity
()
==
null
||
getView
()
==
null
)
return
;
final
TrainingBlogAdapter
trainingBlogAdapter
=
new
TrainingBlogAdapter
(
result
,
new
ItemClickListener
()
{
@Override
public
void
onItemClick
(
View
v
,
int
position
)
{
openWebURL
(
result
.
get
(
position
).
getLink
());
}
});
getActivityBuffer
().
safely
(
new
ActivityBuffer
.
IRunnable
()
{
@Override
public
void
run
(
Activity
pActivity
)
{
try
{
trainingFeedRecyclerView
=
getActivity
().
findViewById
(
R
.
id
.
training_feed_recycler_view
);
trainingFeedRecyclerView
.
setAdapter
(
trainingBlogAdapter
);
trainingFeedRecyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
getContext
()));
trainingFeedRecyclerView
.
addOnScrollListener
(
new
RecyclerView
.
OnScrollListener
()
{
// multiple calls should not be made
boolean
loading
=
false
;
@Override
public
void
onScrolled
(
RecyclerView
recyclerView
,
int
dx
,
int
dy
)
{
if
(
dy
>
0
)
{
LinearLayoutManager
layoutManager
=
(
LinearLayoutManager
)
trainingFeedRecyclerView
.
getLayoutManager
();
if
(((
layoutManager
.
getChildCount
()
+
layoutManager
.
findFirstVisibleItemPosition
())
>
(
layoutManager
.
getItemCount
()
-
5
))
&&
(!
loading
))
{
loading
=
true
;
View
v
=
getActivity
().
findViewById
(
R
.
id
.
training_feed_swipe_refresh_layout
);
RetrofitInterface
retrofitInterface
=
((
MainActivity
)
getActivity
()).
getRetrofitInterface
();
retrofitInterface
.
getTrainingBlogFeed
(
"sessionid="
+
getArguments
().
getString
(
Constants
.
SESSION_ID
),
layoutManager
.
getItemCount
(),
10
,
searchQuery
).
enqueue
(
new
Callback
<
List
<
TrainingBlogPost
>>()
{
@Override
public
void
onResponse
(
Call
<
List
<
TrainingBlogPost
>>
call
,
Response
<
List
<
TrainingBlogPost
>>
response
)
{
loading
=
false
;
List
<
TrainingBlogPost
>
blogPosts
=
(
ArrayList
<
TrainingBlogPost
>)
trainingBlogAdapter
.
getPosts
();
blogPosts
.
addAll
(
response
.
body
());
if
(
response
.
body
().
size
()
==
0
)
{
showLoader
=
false
;
}
trainingBlogAdapter
.
setPosts
(
blogPosts
);
trainingBlogAdapter
.
notifyDataSetChanged
();
// new updateDatabase().execute(blogPosts);
}
@Override
public
void
onFailure
(
Call
<
List
<
TrainingBlogPost
>>
call
,
Throwable
t
)
{
loading
=
false
;
}
});
}
}
}
});
}
catch
(
NullPointerException
e
)
{
e
.
printStackTrace
();
}
}
});
getActivity
().
findViewById
(
R
.
id
.
loadingPanel
).
setVisibility
(
View
.
GONE
);
}
private
void
openWebURL
(
String
URL
)
{
Intent
browse
=
new
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
URL
));
startActivity
(
browse
);
}
@Override
public
void
onCreateOptionsMenu
(
Menu
menu
,
MenuInflater
inflater
)
{
inflater
.
inflate
(
R
.
menu
.
search_view_menu
,
menu
);
MenuItem
item
=
menu
.
findItem
(
R
.
id
.
action_search
);
SearchView
sv
=
new
SearchView
(((
MainActivity
)
getActivity
()).
getSupportActionBar
().
getThemedContext
());
item
.
setShowAsAction
(
MenuItem
.
SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
|
MenuItem
.
SHOW_AS_ACTION_IF_ROOM
);
item
.
setActionView
(
sv
);
sv
.
setOnQueryTextListener
(
new
SearchView
.
OnQueryTextListener
()
{
@Override
public
boolean
onQueryTextSubmit
(
String
query
)
{
performSearch
(
query
);
return
false
;
}
@Override
public
boolean
onQueryTextChange
(
String
newText
)
{
if
(
TextUtils
.
isEmpty
(
newText
))
{
//Text is cleared, do your thing
searchQuery
=
null
;
updateTrainingFeed
();
showLoader
=
true
;
return
true
;
}
else
if
(
newText
.
length
()
>=
3
)
{
performSearch
(
newText
);
return
true
;
}
return
false
;
}
});
}
private
void
performSearch
(
String
query
)
{
searchQuery
=
query
;
updateTrainingFeed
();
showLoader
=
false
;
Call
<
List
<
TrainingBlogPost
>>
getCall
(
RetrofitInterface
retrofitInterface
,
String
sessionIDHeader
)
{
return
retrofitInterface
.
getTrainingBlogFeed
(
sessionIDHeader
,
0
,
20
,
searchQuery
);
}
}
app/src/main/java/app/insti/fragment/UserFragment.java
View file @
e1f4a6a2
...
...
@@ -31,14 +31,13 @@ import com.squareup.picasso.Picasso;
import
java.util.List
;
import
app.insti.Constants
;
import
app.insti.ItemClickListener
;
import
app.insti.
interfaces.
ItemClickListener
;
import
app.insti.R
;
import
app.insti.ShareURLMaker
;
import
app.insti.activity.MainActivity
;
import
app.insti.adapter.RoleAdapter
;
import
app.insti.adapter.TabAdapter
;
import
app.insti.api.RetrofitInterface
;
import
app.insti.api.ServiceGenerator
;
import
app.insti.data.Body
;
import
app.insti.data.Event
;
import
app.insti.data.Role
;
...
...
app/src/main/java/app/insti/interfaces/Browsable.java
0 → 100644
View file @
e1f4a6a2
package
app.insti.interfaces
;
public
interface
Browsable
{
String
getLink
();
}
app/src/main/java/app/insti/ItemClickListener.java
→
app/src/main/java/app/insti/
interfaces/
ItemClickListener.java
View file @
e1f4a6a2
package
app.insti
;
package
app.insti
.interfaces
;
import
android.view.View
;
...
...
app/src/main/java/app/insti/interfaces/Readable.java
0 → 100644
View file @
e1f4a6a2
package
app.insti.interfaces
;
import
java.util.List
;
public
interface
Readable
<
T
>
{
List
<
T
>
getPosts
();
}
app/src/main/java/app/insti/interfaces/Writable.java
0 → 100644
View file @
e1f4a6a2
package
app.insti.interfaces
;
import
java.util.List
;
public
interface
Writable
<
T
>
{
void
setPosts
(
List
<
T
>
posts
);
}
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