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
d61135c1
Commit
d61135c1
authored
Jul 15, 2017
by
Sajal Narang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implement News Feed API
parent
8219ecaf
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
320 additions
and
5 deletions
+320
-5
.idea/modules.xml
.idea/modules.xml
+1
-0
app/build.gradle
app/build.gradle
+2
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/ItemClickListener.java
...n/java/in/ac/iitb/gymkhana/iitbapp/ItemClickListener.java
+7
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/adapter/FeedAdapter.java
...java/in/ac/iitb/gymkhana/iitbapp/adapter/FeedAdapter.java
+74
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/api/RetrofitInterface.java
...va/in/ac/iitb/gymkhana/iitbapp/api/RetrofitInterface.java
+8
-1
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/api/model/Event.java
...ain/java/in/ac/iitb/gymkhana/iitbapp/api/model/Event.java
+75
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/api/model/NewsFeedRequest.java
...n/ac/iitb/gymkhana/iitbapp/api/model/NewsFeedRequest.java
+40
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/api/model/NewsFeedResponse.java
.../ac/iitb/gymkhana/iitbapp/api/model/NewsFeedResponse.java
+22
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/fragment/FeedFragment.java
...va/in/ac/iitb/gymkhana/iitbapp/fragment/FeedFragment.java
+47
-0
app/src/main/res/layout/fragment_feed.xml
app/src/main/res/layout/fragment_feed.xml
+3
-4
app/src/main/res/layout/post.xml
app/src/main/res/layout/post.xml
+41
-0
No files found.
.idea/modules.xml
View file @
d61135c1
...
...
@@ -3,6 +3,7 @@
<component
name=
"ProjectModuleManager"
>
<modules>
<module
fileurl=
"file://$PROJECT_DIR$/IITB-App.iml"
filepath=
"$PROJECT_DIR$/IITB-App.iml"
/>
<module
fileurl=
"file://$PROJECT_DIR$/IITBApp.iml"
filepath=
"$PROJECT_DIR$/IITBApp.iml"
/>
<module
fileurl=
"file://$PROJECT_DIR$/app/app.iml"
filepath=
"$PROJECT_DIR$/app/app.iml"
/>
</modules>
</component>
...
...
app/build.gradle
View file @
d61135c1
...
...
@@ -28,6 +28,7 @@ ext {
appAuthVersion
=
'0.2.0'
retrofitVersion
=
'2.1.0'
okhttpVersion
=
'3.4.1'
picassoVersion
=
'2.5.0'
}
...
...
@@ -49,5 +50,6 @@ dependencies {
compile
"com.squareup.retrofit2:converter-gson:${retrofitVersion}"
compile
"com.squareup.okhttp3:okhttp:${okhttpVersion}"
compile
"com.squareup.okhttp3:logging-interceptor:${okhttpVersion}"
compile
"com.squareup.picasso:picasso:${picassoVersion}"
}
apply
plugin:
'com.google.gms.google-services'
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/ItemClickListener.java
0 → 100755
View file @
d61135c1
package
in.ac.iitb.gymkhana.iitbapp
;
import
android.view.View
;
public
interface
ItemClickListener
{
void
onItemClick
(
View
v
,
int
position
);
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/adapter/FeedAdapter.java
0 → 100644
View file @
d61135c1
package
in.ac.iitb.gymkhana.iitbapp.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
com.squareup.picasso.Picasso
;
import
java.util.List
;
import
in.ac.iitb.gymkhana.iitbapp.ItemClickListener
;
import
in.ac.iitb.gymkhana.iitbapp.R
;
import
in.ac.iitb.gymkhana.iitbapp.api.model.Event
;
public
class
FeedAdapter
extends
RecyclerView
.
Adapter
<
FeedAdapter
.
ViewHolder
>
{
private
List
<
Event
>
posts
;
private
Context
context
;
private
ItemClickListener
itemClickListener
;
public
FeedAdapter
(
List
<
Event
>
posts
,
ItemClickListener
itemClickListener
)
{
this
.
posts
=
posts
;
this
.
itemClickListener
=
itemClickListener
;
}
@Override
public
ViewHolder
onCreateViewHolder
(
ViewGroup
viewGroup
,
int
i
)
{
context
=
viewGroup
.
getContext
();
LayoutInflater
inflater
=
LayoutInflater
.
from
(
context
);
View
postView
=
inflater
.
inflate
(
R
.
layout
.
post
,
viewGroup
,
false
);
final
ViewHolder
postViewHolder
=
new
ViewHolder
(
postView
);
postView
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
itemClickListener
.
onItemClick
(
v
,
postViewHolder
.
getAdapterPosition
());
}
});
return
postViewHolder
;
}
@Override
public
void
onBindViewHolder
(
ViewHolder
viewHolder
,
int
i
)
{
Event
currentEvent
=
posts
.
get
(
i
);
viewHolder
.
eventTitle
.
setText
(
currentEvent
.
getEventName
());
viewHolder
.
eventDetails
.
setText
(
currentEvent
.
getEventDescription
());
Picasso
.
with
(
context
).
load
(
currentEvent
.
getEventImage
()).
into
(
viewHolder
.
eventPicture
);
}
@Override
public
int
getItemCount
()
{
return
posts
.
size
();
}
public
class
ViewHolder
extends
RecyclerView
.
ViewHolder
{
private
ImageView
eventPicture
;
private
TextView
eventTitle
;
private
TextView
eventDetails
;
private
ImageView
eventEnthu
;
public
ViewHolder
(
View
itemView
)
{
super
(
itemView
);
eventPicture
=
(
ImageView
)
itemView
.
findViewById
(
R
.
id
.
event_picture
);
eventTitle
=
(
TextView
)
itemView
.
findViewById
(
R
.
id
.
event_title
);
eventDetails
=
(
TextView
)
itemView
.
findViewById
(
R
.
id
.
event_details
);
eventEnthu
=
(
ImageView
)
itemView
.
findViewById
(
R
.
id
.
event_enthu
);
}
}
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/api/RetrofitInterface.java
View file @
d61135c1
...
...
@@ -2,11 +2,18 @@ package in.ac.iitb.gymkhana.iitbapp.api;
import
in.ac.iitb.gymkhana.iitbapp.api.model.LoginRequest
;
import
in.ac.iitb.gymkhana.iitbapp.api.model.LoginResponse
;
import
in.ac.iitb.gymkhana.iitbapp.api.model.NewsFeedRequest
;
import
in.ac.iitb.gymkhana.iitbapp.api.model.NewsFeedResponse
;
import
retrofit2.Call
;
import
retrofit2.http.Body
;
import
retrofit2.http.GET
;
import
retrofit2.http.POST
;
import
retrofit2.http.PUT
;
public
interface
RetrofitInterface
{
@POST
(
"
/
login/"
)
@POST
(
"login/"
)
Call
<
LoginResponse
>
login
(
@Body
LoginRequest
loginRequest
);
@GET
(
"getNewsFeed/"
)
Call
<
NewsFeedResponse
>
getNewsFeed
(
@Body
NewsFeedRequest
newsFeedRequest
);
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/api/model/Event.java
0 → 100644
View file @
d61135c1
package
in.ac.iitb.gymkhana.iitbapp.api.model
;
import
com.google.gson.annotations.SerializedName
;
public
class
Event
{
@SerializedName
(
"event_name"
)
String
eventName
;
@SerializedName
(
"event_description"
)
String
eventDescription
;
@SerializedName
(
"event_image"
)
String
eventImage
;
@SerializedName
(
"event_creator_name"
)
String
eventCreatorName
;
@SerializedName
(
"event_creator_id"
)
String
eventCreatorId
;
@SerializedName
(
"event_going_status"
)
int
eventEnthu
;
public
Event
(
String
eventName
,
String
eventDescription
,
String
eventImage
,
String
eventCreatorName
,
String
eventCreatorId
,
int
eventEnthu
)
{
this
.
eventName
=
eventName
;
this
.
eventDescription
=
eventDescription
;
this
.
eventImage
=
eventImage
;
this
.
eventCreatorName
=
eventCreatorName
;
this
.
eventCreatorId
=
eventCreatorId
;
this
.
eventEnthu
=
eventEnthu
;
}
public
String
getEventName
()
{
return
eventName
;
}
public
void
setEventName
(
String
eventName
)
{
this
.
eventName
=
eventName
;
}
public
String
getEventDescription
()
{
return
eventDescription
;
}
public
void
setEventDescription
(
String
eventDescription
)
{
this
.
eventDescription
=
eventDescription
;
}
public
String
getEventImage
()
{
return
eventImage
;
}
public
void
setEventImage
(
String
eventImage
)
{
this
.
eventImage
=
eventImage
;
}
public
String
getEventCreatorName
()
{
return
eventCreatorName
;
}
public
void
setEventCreatorName
(
String
eventCreatorName
)
{
this
.
eventCreatorName
=
eventCreatorName
;
}
public
String
getEventCreatorId
()
{
return
eventCreatorId
;
}
public
void
setEventCreatorId
(
String
eventCreatorId
)
{
this
.
eventCreatorId
=
eventCreatorId
;
}
public
int
getEventEnthu
()
{
return
eventEnthu
;
}
public
void
setEventEnthu
(
int
eventEnthu
)
{
this
.
eventEnthu
=
eventEnthu
;
}
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/api/model/NewsFeedRequest.java
0 → 100644
View file @
d61135c1
package
in.ac.iitb.gymkhana.iitbapp.api.model
;
public
class
NewsFeedRequest
{
public
static
final
int
FOLLOWED
=
0
;
public
static
final
int
POPULAR
=
1
;
private
int
type
;
private
int
from
;
private
int
to
;
public
NewsFeedRequest
(
int
type
,
int
from
,
int
to
)
{
this
.
type
=
type
;
this
.
from
=
from
;
this
.
to
=
to
;
}
public
int
getType
()
{
return
type
;
}
public
void
setType
(
int
type
)
{
this
.
type
=
type
;
}
public
int
getFrom
()
{
return
from
;
}
public
void
setFrom
(
int
from
)
{
this
.
from
=
from
;
}
public
int
getTo
()
{
return
to
;
}
public
void
setTo
(
int
to
)
{
this
.
to
=
to
;
}
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/api/model/NewsFeedResponse.java
0 → 100644
View file @
d61135c1
package
in.ac.iitb.gymkhana.iitbapp.api.model
;
import
com.google.gson.annotations.SerializedName
;
import
java.util.List
;
public
class
NewsFeedResponse
{
@SerializedName
(
"posts"
)
private
List
<
Event
>
events
;
public
NewsFeedResponse
(
List
<
Event
>
events
)
{
this
.
events
=
events
;
}
public
List
<
Event
>
getEvents
()
{
return
events
;
}
public
void
setEvents
(
List
<
Event
>
events
)
{
this
.
events
=
events
;
}
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/fragment/FeedFragment.java
View file @
d61135c1
...
...
@@ -3,17 +3,32 @@ package in.ac.iitb.gymkhana.iitbapp.fragment;
import
android.os.Bundle
;
import
android.support.v4.app.Fragment
;
import
android.support.v7.widget.LinearLayoutManager
;
import
android.support.v7.widget.RecyclerView
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
java.util.List
;
import
in.ac.iitb.gymkhana.iitbapp.ItemClickListener
;
import
in.ac.iitb.gymkhana.iitbapp.R
;
import
in.ac.iitb.gymkhana.iitbapp.adapter.FeedAdapter
;
import
in.ac.iitb.gymkhana.iitbapp.api.RetrofitInterface
;
import
in.ac.iitb.gymkhana.iitbapp.api.ServiceGenerator
;
import
in.ac.iitb.gymkhana.iitbapp.api.model.Event
;
import
in.ac.iitb.gymkhana.iitbapp.api.model.NewsFeedRequest
;
import
in.ac.iitb.gymkhana.iitbapp.api.model.NewsFeedResponse
;
import
retrofit2.Call
;
import
retrofit2.Callback
;
import
retrofit2.Response
;
/**
* A simple {@link Fragment} subclass.
*/
public
class
FeedFragment
extends
Fragment
{
RecyclerView
feedRecyclerView
;
public
FeedFragment
()
{
// Required empty public constructor
...
...
@@ -27,4 +42,36 @@ public class FeedFragment extends Fragment {
return
inflater
.
inflate
(
R
.
layout
.
fragment_feed
,
container
,
false
);
}
@Override
public
void
onStart
()
{
super
.
onStart
();
NewsFeedRequest
newsFeedRequest
=
new
NewsFeedRequest
(
NewsFeedRequest
.
FOLLOWED
,
0
,
20
);
RetrofitInterface
retrofitInterface
=
ServiceGenerator
.
createService
(
RetrofitInterface
.
class
);
retrofitInterface
.
getNewsFeed
().
enqueue
(
new
Callback
<
NewsFeedResponse
>()
{
@Override
public
void
onResponse
(
Call
<
NewsFeedResponse
>
call
,
Response
<
NewsFeedResponse
>
response
)
{
if
(
response
.
isSuccessful
())
{
NewsFeedResponse
newsFeedResponse
=
response
.
body
();
List
<
Event
>
events
=
newsFeedResponse
.
getEvents
();
FeedAdapter
feedAdapter
=
new
FeedAdapter
(
events
,
new
ItemClickListener
()
{
@Override
public
void
onItemClick
(
View
v
,
int
position
)
{
// TODO: Launch EventFragment
}
});
feedRecyclerView
=
(
RecyclerView
)
getActivity
().
findViewById
(
R
.
id
.
feed_recycler_view
);
feedRecyclerView
.
setAdapter
(
feedAdapter
);
feedRecyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
getContext
()));
}
//Server Error
}
@Override
public
void
onFailure
(
Call
<
NewsFeedResponse
>
call
,
Throwable
t
)
{
//Network Error
}
});
}
}
app/src/main/res/layout/fragment_feed.xml
View file @
d61135c1
...
...
@@ -4,10 +4,9 @@
android:layout_height=
"match_parent"
tools:context=
"in.ac.iitb.gymkhana.iitbapp.fragment.FeedFragment"
>
<
!-- TODO: Update blank fragment layout -->
<TextView
<
android.support.v7.widget.RecyclerView
android:id=
"@+id/feed_recycler_view"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:text=
"@string/hello_blank_fragment"
/>
android:layout_height=
"match_parent"
/>
</FrameLayout>
app/src/main/res/layout/post.xml
0 → 100644
View file @
d61135c1
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:paddingTop=
"8dp"
android:orientation=
"horizontal"
>
<ImageView
android:layout_weight=
"1"
android:layout_width=
"0dp"
android:id=
"@+id/event_picture"
android:layout_height=
"50dp"
/>
<LinearLayout
android:orientation=
"vertical"
android:layout_width=
"0dp"
android:layout_weight=
"3"
android:layout_height=
"wrap_content"
>
<TextView
android:textColor=
"@android:color/black"
android:textSize=
"24sp"
android:id=
"@+id/event_title"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
/>
<TextView
android:id=
"@+id/event_details"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
/>
</LinearLayout>
<ImageView
android:src=
"@drawable/ic_input_add"
android:id=
"@+id/event_enthu"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:layout_height=
"wrap_content"
/>
</LinearLayout>
\ No newline at end of file
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