Commit d389ad19 authored by Sajal Narang's avatar Sajal Narang

Implement Placement and training blogs, fix #96

parent a7a14165
......@@ -38,10 +38,11 @@ import in.ac.iitb.gymkhana.iitbapp.fragment.MapFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.MessMenuFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.MyEventsFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.NotificationsFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.PTCellFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.PeopleFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.PlacementBlogFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.ProfileFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.TimetableFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.TrainingBlogFragment;
import static in.ac.iitb.gymkhana.iitbapp.Constants.MY_PERMISSIONS_REQUEST_ACCESS_LOCATION;
import static in.ac.iitb.gymkhana.iitbapp.Constants.MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE;
......@@ -202,9 +203,13 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
MyEventsFragment myeventsFragment = new MyEventsFragment();
updateFragment(myeventsFragment);
break;
case R.id.nav_pt_cell:
PTCellFragment ptcellFragment = new PTCellFragment();
updateFragment(ptcellFragment);
case R.id.nav_placement_blog:
PlacementBlogFragment placementBlogFragment = new PlacementBlogFragment();
updateFragment(placementBlogFragment);
break;
case R.id.nav_training_blog:
TrainingBlogFragment trainingBlogFragment = new TrainingBlogFragment();
updateFragment(trainingBlogFragment);
break;
case R.id.nav_mess_menu:
MessMenuFragment messmenuFragment = new MessMenuFragment();
......
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.TextView;
import java.util.List;
import in.ac.iitb.gymkhana.iitbapp.ItemClickListener;
import in.ac.iitb.gymkhana.iitbapp.R;
import in.ac.iitb.gymkhana.iitbapp.data.PlacementBlogPost;
import ru.noties.markwon.Markwon;
public class PlacementBlogAdapter extends RecyclerView.Adapter<PlacementBlogAdapter.ViewHolder> {
private List<PlacementBlogPost> posts;
private Context context;
private ItemClickListener itemClickListener;
public PlacementBlogAdapter(List<PlacementBlogPost> posts, ItemClickListener itemClickListener) {
this.posts = posts;
this.itemClickListener = itemClickListener;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
View postView = inflater.inflate(R.layout.blog_post_card, parent, false);
final PlacementBlogAdapter.ViewHolder postViewHolder = new PlacementBlogAdapter.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 holder, int position) {
PlacementBlogPost post = posts.get(position);
Markwon.setMarkdown(holder.postTitle, post.getTitle());
holder.postPublished.setText(post.getPublished());
Markwon.setMarkdown(holder.postContent, post.getContent());
}
@Override
public int getItemCount() {
return posts.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private TextView postTitle;
private TextView postPublished;
private TextView postContent;
public ViewHolder(View itemView) {
super(itemView);
postTitle = (TextView) itemView.findViewById(R.id.post_title);
postPublished = (TextView) itemView.findViewById(R.id.post_published);
postContent = (TextView) itemView.findViewById(R.id.post_content);
}
}
}
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.TextView;
import java.util.List;
import in.ac.iitb.gymkhana.iitbapp.ItemClickListener;
import in.ac.iitb.gymkhana.iitbapp.R;
import in.ac.iitb.gymkhana.iitbapp.data.TrainingBlogPost;
import ru.noties.markwon.Markwon;
public class TrainingBlogAdapter extends RecyclerView.Adapter<TrainingBlogAdapter.ViewHolder> {
private List<TrainingBlogPost> posts;
private Context context;
private ItemClickListener itemClickListener;
public TrainingBlogAdapter(List<TrainingBlogPost> posts, ItemClickListener itemClickListener) {
this.posts = posts;
this.itemClickListener = itemClickListener;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
View postView = inflater.inflate(R.layout.blog_post_card, parent, false);
final TrainingBlogAdapter.ViewHolder postViewHolder = new TrainingBlogAdapter.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 holder, int position) {
TrainingBlogPost post = posts.get(position);
Markwon.setMarkdown(holder.postTitle, post.getTitle());
holder.postPublished.setText(post.getPublished());
Markwon.setMarkdown(holder.postContent, post.getContent());
}
@Override
public int getItemCount() {
return posts.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private TextView postTitle;
private TextView postPublished;
private TextView postContent;
public ViewHolder(View itemView) {
super(itemView);
postTitle = (TextView) itemView.findViewById(R.id.post_title);
postPublished = (TextView) itemView.findViewById(R.id.post_published);
postContent = (TextView) itemView.findViewById(R.id.post_content);
}
}
}
package in.ac.iitb.gymkhana.iitbapp.api;
import java.util.List;
import in.ac.iitb.gymkhana.iitbapp.api.model.EventCreateRequest;
import in.ac.iitb.gymkhana.iitbapp.api.model.EventCreateResponse;
import in.ac.iitb.gymkhana.iitbapp.api.model.ImageUploadRequest;
import in.ac.iitb.gymkhana.iitbapp.api.model.ImageUploadResponse;
import in.ac.iitb.gymkhana.iitbapp.api.model.LoginResponse;
import in.ac.iitb.gymkhana.iitbapp.api.model.NewsFeedResponse;
import in.ac.iitb.gymkhana.iitbapp.data.PlacementBlogPost;
import in.ac.iitb.gymkhana.iitbapp.data.TrainingBlogPost;
import in.ac.iitb.gymkhana.iitbapp.data.User;
import retrofit2.Call;
import retrofit2.http.Body;
......@@ -37,6 +41,12 @@ public interface RetrofitInterface {
@GET("user-me/ues/{eventID}")
Call<Void> updateUserEventStatus(@Header("Cookie") String sessionID, @Path("eventID") String eventID, @Query("status") int status);
@GET("placement-blog")
Call<List<PlacementBlogPost>> getPlacementBlogFeed(@Header("Cookie") String sessionID);
@GET("training-blog")
Call<List<TrainingBlogPost>> getTrainingBlogFeed(@Header("Cookie") String sessionID);
// @POST("getNotifications/")
// Call<NotificationsResponse> getNotifications(@Body NotificationsRequest notificationsRequest);
}
......@@ -6,11 +6,7 @@ import android.arch.persistence.room.RoomDatabase;
import android.arch.persistence.room.TypeConverters;
import android.content.Context;
/**
* Created by mrunz on 14/3/18.
*/
@Database(entities = {Event.class, Body.class, Venue.class, User.class, Role.class}, version = 1)
@Database(entities = {Event.class, Body.class, Venue.class, User.class, Role.class, PlacementBlogPost.class, TrainingBlogPost.class}, version = 1)
@TypeConverters({Converters.class})
public abstract class AppDatabase extends RoomDatabase {
......
......@@ -7,9 +7,6 @@ import android.arch.persistence.room.Query;
import java.util.List;
/**
* Created by mrunz on 13/3/18.
*/
@Dao
public interface DbDao {
@Query("SELECT * FROM events")
......@@ -27,6 +24,12 @@ public interface DbDao {
@Query("SELECT * FROM roles")
List<Role> getAllRoles();
@Query("SELECT * FROM placementBlogPosts")
List<PlacementBlogPost> getAllPlacementBlogPosts();
@Query("SELECT * FROM trainingBlogPosts")
List<TrainingBlogPost> getAllTrainingBlogPosts();
@Query("SELECT * FROM bodies WHERE id == :id")
public Body[] getBody(String id);
......@@ -75,6 +78,18 @@ public interface DbDao {
@Insert
void insertRole(Role role);
@Insert
void insertPlacementBlogPost(PlacementBlogPost post);
@Insert
void insertPlacementBlogPosts(List<PlacementBlogPost> posts);
@Insert
void insertTrainingBlogPost(TrainingBlogPost post);
@Insert
void insertTrainingBlogPosts(List<TrainingBlogPost> posts);
@Delete
void deleteEvent(Event event);
......@@ -104,4 +119,10 @@ public interface DbDao {
@Query("DELETE from roles")
void deleteRoles();
@Query("DELETE from placementBlogPosts")
void deletePlacementBlogPosts();
@Query("DELETE from trainingBlogPosts")
void deleteTrainingBlogPosts();
}
package in.ac.iitb.gymkhana.iitbapp.data;
import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.PrimaryKey;
import com.google.gson.annotations.SerializedName;
@Entity(tableName = "placementBlogPosts")
public class PlacementBlogPost {
@PrimaryKey(autoGenerate = true)
int db_id;
@ColumnInfo(name = "id")
@SerializedName("id")
private String postID;
@ColumnInfo(name = "link")
@SerializedName("link")
private String link;
@ColumnInfo(name = "title")
@SerializedName("title")
private String title;
@ColumnInfo(name = "content")
@SerializedName("content")
private String content;
@ColumnInfo(name = "published")
@SerializedName("published")
private String published;
public PlacementBlogPost(String postID, String link, String title, String content, String published) {
this.postID = postID;
this.link = link;
this.title = title;
this.content = content;
this.published = published;
}
public String getPostID() {
return postID;
}
public void setPostID(String postID) {
this.postID = postID;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getPublished() {
return published;
}
public void setPublished(String published) {
this.published = published;
}
}
package in.ac.iitb.gymkhana.iitbapp.data;
import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.PrimaryKey;
import com.google.gson.annotations.SerializedName;
@Entity(tableName = "trainingBlogPosts")
public class TrainingBlogPost {
@PrimaryKey(autoGenerate = true)
int db_id;
@ColumnInfo(name = "id")
@SerializedName("id")
private String postID;
@ColumnInfo(name = "link")
@SerializedName("link")
private String link;
@ColumnInfo(name = "title")
@SerializedName("title")
private String title;
@ColumnInfo(name = "content")
@SerializedName("content")
private String content;
@ColumnInfo(name = "published")
@SerializedName("published")
private String published;
public TrainingBlogPost(String postID, String link, String title, String content, String published) {
this.postID = postID;
this.link = link;
this.title = title;
this.content = content;
this.published = published;
}
public String getPostID() {
return postID;
}
public void setPostID(String postID) {
this.postID = postID;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getPublished() {
return published;
}
public void setPublished(String published) {
this.published = published;
}
}
package in.ac.iitb.gymkhana.iitbapp.fragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import in.ac.iitb.gymkhana.iitbapp.R;
/**
* A simple {@link Fragment} subclass.
*/
public class PTCellFragment extends BaseFragment {
public PTCellFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_pt_cell, container, false);
}
}
package in.ac.iitb.gymkhana.iitbapp.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.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.List;
import in.ac.iitb.gymkhana.iitbapp.ActivityBuffer;
import in.ac.iitb.gymkhana.iitbapp.Constants;
import in.ac.iitb.gymkhana.iitbapp.ItemClickListener;
import in.ac.iitb.gymkhana.iitbapp.R;
import in.ac.iitb.gymkhana.iitbapp.adapter.PlacementBlogAdapter;
import in.ac.iitb.gymkhana.iitbapp.api.RetrofitInterface;
import in.ac.iitb.gymkhana.iitbapp.api.ServiceGenerator;
import in.ac.iitb.gymkhana.iitbapp.data.AppDatabase;
import in.ac.iitb.gymkhana.iitbapp.data.PlacementBlogPost;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
/**
* A simple {@link Fragment} subclass.
*/
public class PlacementBlogFragment extends BaseFragment {
private RecyclerView placementFeedRecyclerView;
private SwipeRefreshLayout feedSwipeRefreshLayout;
private AppDatabase appDatabase;
public PlacementBlogFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_placement_blog, container, false);
}
@Override
public void onStart() {
super.onStart();
appDatabase = AppDatabase.getAppDatabase(getContext());
new PlacementBlogFragment.showPlacementBlogFromDB().execute();
updatePlacementFeed();
feedSwipeRefreshLayout = getActivity().findViewById(R.id.placement_feed_swipe_refresh_layout);
feedSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
updatePlacementFeed();
}
});
}
private void updatePlacementFeed() {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.getPlacementBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID)).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();
displayPlacementFeed(posts);
new updateDatabase().execute(posts);
}
//Server Error
feedSwipeRefreshLayout.setRefreshing(false);
}
@Override
public void onFailure(Call<List<PlacementBlogPost>> call, Throwable t) {
//Network Error
feedSwipeRefreshLayout.setRefreshing(false);
}
});
}
private void displayPlacementFeed(final List<PlacementBlogPost> result) {
final PlacementBlogAdapter 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()));
} catch (NullPointerException e) {
e.printStackTrace();
}
}
});
}
private void openWebURL(String URL) {
Intent browse = new Intent(Intent.ACTION_VIEW, Uri.parse(URL));
startActivity(browse);
}
private class updateDatabase extends AsyncTask<List<PlacementBlogPost>, Void, Integer> {
@Override
protected Integer doInBackground(List<PlacementBlogPost>... posts) {
appDatabase.dbDao().deletePlacementBlogPosts();
appDatabase.dbDao().insertPlacementBlogPosts(posts[0]);
return 1;
}
}
private class showPlacementBlogFromDB extends AsyncTask<String, Void, List<PlacementBlogPost>> {
@Override
protected List<PlacementBlogPost> doInBackground(String... posts) {
return appDatabase.dbDao().getAllPlacementBlogPosts();
}
protected void onPostExecute(List<PlacementBlogPost> result) {
displayPlacementFeed(result);
}
}
}
package in.ac.iitb.gymkhana.iitbapp.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.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.List;
import in.ac.iitb.gymkhana.iitbapp.ActivityBuffer;
import in.ac.iitb.gymkhana.iitbapp.Constants;
import in.ac.iitb.gymkhana.iitbapp.ItemClickListener;
import in.ac.iitb.gymkhana.iitbapp.R;
import in.ac.iitb.gymkhana.iitbapp.adapter.TrainingBlogAdapter;
import in.ac.iitb.gymkhana.iitbapp.api.RetrofitInterface;
import in.ac.iitb.gymkhana.iitbapp.api.ServiceGenerator;
import in.ac.iitb.gymkhana.iitbapp.data.AppDatabase;
import in.ac.iitb.gymkhana.iitbapp.data.TrainingBlogPost;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
/**
* A simple {@link Fragment} subclass.
*/
public class TrainingBlogFragment extends BaseFragment {
private RecyclerView trainingFeedRecyclerView;
private SwipeRefreshLayout feedSwipeRefreshLayout;
private AppDatabase appDatabase;
public TrainingBlogFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_training_blog, container, false);
}
@Override
public void onStart() {
super.onStart();
appDatabase = AppDatabase.getAppDatabase(getContext());
new TrainingBlogFragment.showTrainingBlogFromDB().execute();
updateTrainingFeed();
feedSwipeRefreshLayout = getActivity().findViewById(R.id.training_feed_swipe_refresh_layout);
feedSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
updateTrainingFeed();
}
});
}
private void updateTrainingFeed() {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.getTrainingBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID)).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();
displayTrainingFeed(posts);
new updateDatabase().execute(posts);
}
//Server Error
feedSwipeRefreshLayout.setRefreshing(false);
}
@Override
public void onFailure(Call<List<TrainingBlogPost>> call, Throwable t) {
//Network Error
feedSwipeRefreshLayout.setRefreshing(false);
}
});
}
private void displayTrainingFeed(final List<TrainingBlogPost> result) {
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()));
} catch (NullPointerException e) {
e.printStackTrace();
}
}
});
}
private void openWebURL(String URL) {
Intent browse = new Intent(Intent.ACTION_VIEW, Uri.parse(URL));
startActivity(browse);
}
private class updateDatabase extends AsyncTask<List<TrainingBlogPost>, Void, Integer> {
@Override
protected Integer doInBackground(List<TrainingBlogPost>... posts) {
appDatabase.dbDao().deleteTrainingBlogPosts();
appDatabase.dbDao().insertTrainingBlogPosts(posts[0]);
return 1;
}
}
private class showTrainingBlogFromDB extends AsyncTask<String, Void, List<TrainingBlogPost>> {
@Override
protected List<TrainingBlogPost> doInBackground(String... posts) {
return appDatabase.dbDao().getAllTrainingBlogPosts();
}
protected void onPostExecute(List<TrainingBlogPost> result) {
displayTrainingFeed(result);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="4dp"
card_view:cardCornerRadius="4dp"
card_view:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:orientation="vertical">
<TextView
android:id="@+id/post_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:id="@+id/post_published"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/post_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:textColor="#000000" />
</LinearLayout>
</android.support.v7.widget.CardView>
\ No newline at end of file
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="in.ac.iitb.gymkhana.iitbapp.fragment.PlacementBlogFragment">
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/placement_feed_swipe_refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="in.ac.iitb.gymkhana.iitbapp.fragment.PlacementBlogFrament">
<android.support.v7.widget.RecyclerView
android:id="@+id/placement_feed_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="8dp" />
</android.support.v4.widget.SwipeRefreshLayout>
</RelativeLayout>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="in.ac.iitb.gymkhana.iitbapp.fragment.PTCellFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment" />
</FrameLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="in.ac.iitb.gymkhana.iitbapp.fragment.TrainingBlogFragment">
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/training_feed_swipe_refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="in.ac.iitb.gymkhana.iitbapp.fragment.TrainingBlogFragment">
<android.support.v7.widget.RecyclerView
android:id="@+id/training_feed_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="8dp" />
</android.support.v4.widget.SwipeRefreshLayout>
</RelativeLayout>
......@@ -13,10 +13,16 @@
android:id="@+id/nav_my_events"
android:icon="@drawable/ic_event"
android:title="My Events" />
<item
android:id="@+id/nav_placement_blog"
android:icon="@drawable/ic_work_black_48dp"
android:title="Placement Blog" />
<item
android:id="@+id/nav_pt_cell"
android:id="@+id/nav_training_blog"
android:icon="@drawable/ic_work_black_48dp"
android:title="PT Cell" />
android:title="Training Blog" />
<item
android:id="@+id/nav_mess_menu"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment