From 32e3bf238dfc456ca00a846180d34c61b68fa9f0 Mon Sep 17 00:00:00 2001 From: anirudh chugh Date: Wed, 26 Jul 2017 22:59:14 +0530 Subject: [PATCH 1/3] somewhat added NSITpedia --- .idea/gradle.xml | 7 +- .idea/markdown-navigator.xml | 72 +++++++++++++++++++ .../markdown-navigator/profiles_settings.xml | 3 + app/build.gradle | 21 ++++-- app/src/main/AndroidManifest.xml | 63 ++++++++-------- .../Adapter/NsitPediaAdapter.java | 72 +++++++++++++++++++ .../com/ap/collegespacev2/BaseActivity.java | 1 + .../collegespacev2/Helper/NsitPediaApi.java | 18 +++++ .../ap/collegespacev2/Models/NpediaPosts.kt | 10 +++ .../ap/collegespacev2/NsitPediaActivity.java | 58 +++++++++++++++ app/src/main/res/drawable-v21/ic_person.xml | 4 ++ app/src/main/res/drawable/ic_person.xml | 4 ++ .../main/res/layout/activity_nsit_pedia.xml | 19 +++++ .../main/res/layout/list_nsitpedia_posts.xml | 59 +++++++++++++++ build.gradle | 4 +- gradle/wrapper/gradle-wrapper.properties | 4 +- 16 files changed, 375 insertions(+), 44 deletions(-) create mode 100644 .idea/markdown-navigator.xml create mode 100644 .idea/markdown-navigator/profiles_settings.xml create mode 100644 app/src/main/java/com/ap/collegespacev2/Adapter/NsitPediaAdapter.java create mode 100644 app/src/main/java/com/ap/collegespacev2/Helper/NsitPediaApi.java create mode 100644 app/src/main/java/com/ap/collegespacev2/Models/NpediaPosts.kt create mode 100644 app/src/main/java/com/ap/collegespacev2/NsitPediaActivity.java create mode 100644 app/src/main/res/drawable-v21/ic_person.xml create mode 100644 app/src/main/res/drawable/ic_person.xml create mode 100644 app/src/main/res/layout/activity_nsit_pedia.xml create mode 100644 app/src/main/res/layout/list_nsitpedia_posts.xml diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 35659d6..a5d4cab 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -12,12 +12,7 @@ - + diff --git a/.idea/markdown-navigator.xml b/.idea/markdown-navigator.xml new file mode 100644 index 0000000..d819570 --- /dev/null +++ b/.idea/markdown-navigator.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/markdown-navigator/profiles_settings.xml b/.idea/markdown-navigator/profiles_settings.xml new file mode 100644 index 0000000..57927c5 --- /dev/null +++ b/.idea/markdown-navigator/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4fbe0a1..6d9e808 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,9 +1,10 @@ apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' apply plugin: 'com.google.gms.google-services' android { - compileSdkVersion 'Google Inc.:Google APIs:21' - buildToolsVersion "22.0.1" + compileSdkVersion 21 + buildToolsVersion '25.0.0' defaultConfig { applicationId "com.ap.collegespacev2" @@ -21,8 +22,18 @@ android { } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - testCompile 'junit:junit:4.12' - compile 'com.android.support:appcompat-v7:21.+' + compile fileTree(include: ['*.jar'], dir: 'libs') + compile 'com.android.support:appcompat-v7:21.0.3' compile 'com.google.android.gms:play-services-gcm:7.5.0' + compile 'com.android.support.constraint:constraint-layout:1.0.2' + testCompile 'junit:junit:4.12' + compile 'com.android.support:recyclerview-v7:21.0.+' + compile 'com.android.support:cardview-v7:21.0.+' + compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" + compile 'com.squareup.retrofit2:retrofit:2.3.0' + compile 'com.squareup.retrofit2:converter-gson:2.3.0' + compile 'com.squareup.picasso:picasso:2.5.2' +} +repositories { + mavenCentral() } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5b82eaf..7aaa70f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,13 +2,16 @@ - - + + - + + - + android:name=".Home" + android:label="@string/app_name"> - + android:name=".Settings" + android:label="@string/app_name"> - + android:name=".NSITulator" + android:label="@string/app_name"> - + android:name=".Bookmarks" + android:label="@string/app_name"> - + android:name=".Calculator" + android:label="@string/app_name"> - + android:name=".BaseActivity" + android:label="@string/app_name"> + - + android:name=".PostDetails" + android:configChanges="keyboardHidden|orientation|screenSize" + android:theme="@style/ThemeFading"> + android:name=".Gcm.GcmBroadcastReceiver" + android:permission="com.google.android.c2dm.permission.SEND"> + + - + + + + - + + \ No newline at end of file diff --git a/app/src/main/java/com/ap/collegespacev2/Adapter/NsitPediaAdapter.java b/app/src/main/java/com/ap/collegespacev2/Adapter/NsitPediaAdapter.java new file mode 100644 index 0000000..533a35a --- /dev/null +++ b/app/src/main/java/com/ap/collegespacev2/Adapter/NsitPediaAdapter.java @@ -0,0 +1,72 @@ +package com.ap.collegespacev2.Adapter; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.text.Html; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.ap.collegespacev2.Models.NpediaPosts; +import com.ap.collegespacev2.R; +import com.squareup.picasso.Picasso; + +import java.util.ArrayList; + +/** + * Created by anirudh on 26/07/17. + */ + +public class NsitPediaAdapter extends RecyclerView.Adapter { + + ArrayList arrayListPosts ; + Context mContext ; + + public NsitPediaAdapter(ArrayList arrayListPosts, Context mContext) { + this.arrayListPosts = arrayListPosts; + this.mContext = mContext; + } + public void updatePosts(ArrayList arrayListPosts){ + this.arrayListPosts = arrayListPosts ; + notifyDataSetChanged(); + } + @Override + public PostsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + LayoutInflater li = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + View itemView = li.inflate(R.layout.list_nsitpedia_posts , parent , false) ; + + + return new PostsViewHolder(itemView); + } + + @Override + public void onBindViewHolder(PostsViewHolder holder, int position) { + NpediaPosts thisPost = arrayListPosts.get(position) ; + holder.tvTitle.setText(thisPost.getTitle()); + holder.tvDescription.setText(Html.fromHtml(thisPost.getExcerpt())); + holder.tvAuthor.setText(thisPost.getAuthor().getUsername()); + Picasso.with(mContext) + .load(thisPost.getAuthor().getAvatar()) + .into(holder.ivAvatar); + + } + + @Override + public int getItemCount() { + return arrayListPosts.size(); + } + + class PostsViewHolder extends RecyclerView.ViewHolder{ + TextView tvTitle , tvAuthor , tvDescription ; + ImageView ivAvatar ; + public PostsViewHolder(View itemView) { + super(itemView); + tvTitle = (TextView) itemView.findViewById(R.id.tvTitle) ; + tvAuthor = (TextView) itemView.findViewById(R.id.tvPostersName) ; + tvDescription = (TextView) itemView.findViewById(R.id.tvDescription) ; + ivAvatar = (ImageView)itemView.findViewById(R.id.ivProfilePic) ; + } + } +} diff --git a/app/src/main/java/com/ap/collegespacev2/BaseActivity.java b/app/src/main/java/com/ap/collegespacev2/BaseActivity.java index d1bd156..42258e2 100644 --- a/app/src/main/java/com/ap/collegespacev2/BaseActivity.java +++ b/app/src/main/java/com/ap/collegespacev2/BaseActivity.java @@ -173,6 +173,7 @@ public void onItemClick(AdapterView parent, View view, int position, long id) switch (position) { case 0: toStart = new Intent(BaseActivity.this, Home.class); break; + case 1 : toStart = new Intent(BaseActivity.this , NsitPediaActivity.class) ; break ; case 2: toStart = new Intent(BaseActivity.this, Bookmarks.class); break; case 4: toStart = new Intent(BaseActivity.this, NSITulator.class); break; case 5: toStart = new Intent(BaseActivity.this, Settings.class); break; diff --git a/app/src/main/java/com/ap/collegespacev2/Helper/NsitPediaApi.java b/app/src/main/java/com/ap/collegespacev2/Helper/NsitPediaApi.java new file mode 100644 index 0000000..e0a28b6 --- /dev/null +++ b/app/src/main/java/com/ap/collegespacev2/Helper/NsitPediaApi.java @@ -0,0 +1,18 @@ +package com.ap.collegespacev2.Helper; + +import com.ap.collegespacev2.Models.NpediaPosts; + +import java.util.ArrayList; + +import retrofit2.Call; +import retrofit2.http.GET; + +/** + * Created by anirudh on 26/07/17. + */ + +public interface NsitPediaApi { + + @GET("posts") + Call> getPosts() ; +} diff --git a/app/src/main/java/com/ap/collegespacev2/Models/NpediaPosts.kt b/app/src/main/java/com/ap/collegespacev2/Models/NpediaPosts.kt new file mode 100644 index 0000000..5aa748a --- /dev/null +++ b/app/src/main/java/com/ap/collegespacev2/Models/NpediaPosts.kt @@ -0,0 +1,10 @@ +package com.ap.collegespacev2.Models + +/** + * Created by anirudh on 26/07/17. + */ +data class NpediaPosts (var ID : Int , var title : String , var content : String , + var link : String , var author : Author , var excerpt : String) { + + data class Author(var username : String , var avatar : String) +} \ No newline at end of file diff --git a/app/src/main/java/com/ap/collegespacev2/NsitPediaActivity.java b/app/src/main/java/com/ap/collegespacev2/NsitPediaActivity.java new file mode 100644 index 0000000..ecf1745 --- /dev/null +++ b/app/src/main/java/com/ap/collegespacev2/NsitPediaActivity.java @@ -0,0 +1,58 @@ +package com.ap.collegespacev2; + +import android.support.v7.app.ActionBarActivity; +import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.util.Log; + +import com.ap.collegespacev2.Adapter.NsitPediaAdapter; +import com.ap.collegespacev2.Helper.NsitPediaApi; +import com.ap.collegespacev2.Models.NpediaPosts; + +import java.util.ArrayList; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; + +public class NsitPediaActivity extends BaseActivity { + + public static final String TAG = "NsitPediaActivity : " ; + RecyclerView rvPosts ; + NsitPediaAdapter adapter ; + ArrayList listPostsNPedias ; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_nsit_pedia , 2); + getSupportActionBar().setTitle("NSITpedia"); + rvPosts = (RecyclerView)findViewById(R.id.rvPostsNsitPedia) ; + rvPosts.setLayoutManager(new LinearLayoutManager(this)); + listPostsNPedias = new ArrayList<>() ; + adapter = new NsitPediaAdapter(listPostsNPedias , this) ; + rvPosts.setAdapter(adapter); + + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://nsitpedia.collegespace.in/wp-json/") + .addConverterFactory(GsonConverterFactory.create()) + .build() ; + NsitPediaApi api = retrofit.create(NsitPediaApi.class) ; + + api.getPosts().enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + adapter.updatePosts(response.body()); + + } + + @Override + public void onFailure(Call> call, Throwable t) { + Log.d(TAG, "onFailure: "); + } + }); + } +} diff --git a/app/src/main/res/drawable-v21/ic_person.xml b/app/src/main/res/drawable-v21/ic_person.xml new file mode 100644 index 0000000..b6308a2 --- /dev/null +++ b/app/src/main/res/drawable-v21/ic_person.xml @@ -0,0 +1,4 @@ + + + + diff --git a/app/src/main/res/drawable/ic_person.xml b/app/src/main/res/drawable/ic_person.xml new file mode 100644 index 0000000..b6308a2 --- /dev/null +++ b/app/src/main/res/drawable/ic_person.xml @@ -0,0 +1,4 @@ + + + + diff --git a/app/src/main/res/layout/activity_nsit_pedia.xml b/app/src/main/res/layout/activity_nsit_pedia.xml new file mode 100644 index 0000000..43e8c6c --- /dev/null +++ b/app/src/main/res/layout/activity_nsit_pedia.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/app/src/main/res/layout/list_nsitpedia_posts.xml b/app/src/main/res/layout/list_nsitpedia_posts.xml new file mode 100644 index 0000000..16ef203 --- /dev/null +++ b/app/src/main/res/layout/list_nsitpedia_posts.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 65333c6..4f66ef7 100644 --- a/build.gradle +++ b/build.gradle @@ -1,12 +1,14 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { + ext.kotlin_version = '1.1.3-2' repositories { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.0.0-alpha9' + classpath 'com.android.tools.build:gradle:2.3.3' classpath 'com.google.gms:google-services:1.3.0-beta1' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 122a0dc..31298fe 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Dec 28 10:00:20 PST 2015 +#Mon Jul 24 00:09:04 IST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip From 663b0d7fc2b7a6f2b04a8ff0988deb3bd92bba28 Mon Sep 17 00:00:00 2001 From: anirudh chugh Date: Fri, 28 Jul 2017 00:41:34 +0530 Subject: [PATCH 2/3] added NSITpedia detailed Posts --- app/build.gradle | 11 ++- app/src/main/AndroidManifest.xml | 19 ++-- .../Adapter/NsitPediaAdapter.java | 33 +++++-- .../java/com/ap/collegespacev2/Launcher.java | 1 + .../ap/collegespacev2/Models/NpediaPosts.kt | 5 +- .../collegespacev2/NSITpediaPostDetails.java | 98 +++++++++++++++++++ .../ap/collegespacev2/NsitPediaActivity.java | 24 ++++- .../activity_nsitpedia_post_details.xml | 41 ++++++++ .../main/res/layout/list_nsitpedia_posts.xml | 5 + 9 files changed, 214 insertions(+), 23 deletions(-) create mode 100644 app/src/main/java/com/ap/collegespacev2/NSITpediaPostDetails.java create mode 100644 app/src/main/res/layout/activity_nsitpedia_post_details.xml diff --git a/app/build.gradle b/app/build.gradle index 6d9e808..39152ba 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,16 +23,17 @@ android { dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') + compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" compile 'com.android.support:appcompat-v7:21.0.3' + compile 'com.android.support:support-v4:23.2.1' compile 'com.google.android.gms:play-services-gcm:7.5.0' compile 'com.android.support.constraint:constraint-layout:1.0.2' - testCompile 'junit:junit:4.12' - compile 'com.android.support:recyclerview-v7:21.0.+' - compile 'com.android.support:cardview-v7:21.0.+' - compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" + compile 'com.android.support:recyclerview-v7:21.0.3' + compile 'com.android.support:cardview-v7:21.0.3' compile 'com.squareup.retrofit2:retrofit:2.3.0' compile 'com.squareup.retrofit2:converter-gson:2.3.0' - compile 'com.squareup.picasso:picasso:2.5.2' + compile 'com.github.bumptech.glide:glide:4.0.0-RC1' + testCompile 'junit:junit:4.12' } repositories { mavenCentral() diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7aaa70f..29122e6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -22,22 +22,22 @@ android:theme="@style/BaseTheme"> + android:label="@string/app_name" /> + android:label="@string/app_name" /> + android:label="@string/app_name" /> + android:label="@string/app_name" /> + android:label="@string/app_name" /> + android:label="@string/app_name" /> @@ -50,7 +50,7 @@ + android:theme="@style/ThemeFading" /> - + + \ No newline at end of file diff --git a/app/src/main/java/com/ap/collegespacev2/Adapter/NsitPediaAdapter.java b/app/src/main/java/com/ap/collegespacev2/Adapter/NsitPediaAdapter.java index 533a35a..474adf9 100644 --- a/app/src/main/java/com/ap/collegespacev2/Adapter/NsitPediaAdapter.java +++ b/app/src/main/java/com/ap/collegespacev2/Adapter/NsitPediaAdapter.java @@ -11,7 +11,8 @@ import com.ap.collegespacev2.Models.NpediaPosts; import com.ap.collegespacev2.R; -import com.squareup.picasso.Picasso; +import com.bumptech.glide.Glide; + import java.util.ArrayList; @@ -23,34 +24,49 @@ public class NsitPediaAdapter extends RecyclerView.Adapter arrayListPosts ; Context mContext ; + onItemCLickedListener onItemCLickedListener ; - public NsitPediaAdapter(ArrayList arrayListPosts, Context mContext) { + public NsitPediaAdapter(ArrayList arrayListPosts, Context mContext , onItemCLickedListener oicl) { this.arrayListPosts = arrayListPosts; this.mContext = mContext; + this.onItemCLickedListener = oicl ; + } public void updatePosts(ArrayList arrayListPosts){ this.arrayListPosts = arrayListPosts ; notifyDataSetChanged(); } + public interface onItemCLickedListener{ + void onItemCLicked(View view , NpediaPosts thisPost); + } @Override public PostsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { LayoutInflater li = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View itemView = li.inflate(R.layout.list_nsitpedia_posts , parent , false) ; - - return new PostsViewHolder(itemView); } @Override public void onBindViewHolder(PostsViewHolder holder, int position) { - NpediaPosts thisPost = arrayListPosts.get(position) ; + final NpediaPosts thisPost = arrayListPosts.get(position) ; holder.tvTitle.setText(thisPost.getTitle()); holder.tvDescription.setText(Html.fromHtml(thisPost.getExcerpt())); holder.tvAuthor.setText(thisPost.getAuthor().getUsername()); - Picasso.with(mContext) + + Glide.with(mContext) .load(thisPost.getAuthor().getAvatar()) .into(holder.ivAvatar); + Glide.with(mContext) + .load(thisPost.getFeatured_image().getGuid()) + .into(holder.ivFeaturedImage) ; + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onItemCLickedListener.onItemCLicked(v , thisPost); + } + }); + } @Override @@ -60,13 +76,16 @@ public int getItemCount() { class PostsViewHolder extends RecyclerView.ViewHolder{ TextView tvTitle , tvAuthor , tvDescription ; - ImageView ivAvatar ; + ImageView ivAvatar , ivFeaturedImage; + View itemView ; public PostsViewHolder(View itemView) { super(itemView); tvTitle = (TextView) itemView.findViewById(R.id.tvTitle) ; tvAuthor = (TextView) itemView.findViewById(R.id.tvPostersName) ; tvDescription = (TextView) itemView.findViewById(R.id.tvDescription) ; ivAvatar = (ImageView)itemView.findViewById(R.id.ivProfilePic) ; + ivFeaturedImage = (ImageView)itemView.findViewById(R.id.ivFeaturedImage) ; + this.itemView = itemView ; } } } diff --git a/app/src/main/java/com/ap/collegespacev2/Launcher.java b/app/src/main/java/com/ap/collegespacev2/Launcher.java index 28ed7dd..1ce9d34 100644 --- a/app/src/main/java/com/ap/collegespacev2/Launcher.java +++ b/app/src/main/java/com/ap/collegespacev2/Launcher.java @@ -1,5 +1,6 @@ package com.ap.collegespacev2; +import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; diff --git a/app/src/main/java/com/ap/collegespacev2/Models/NpediaPosts.kt b/app/src/main/java/com/ap/collegespacev2/Models/NpediaPosts.kt index 5aa748a..52d4e90 100644 --- a/app/src/main/java/com/ap/collegespacev2/Models/NpediaPosts.kt +++ b/app/src/main/java/com/ap/collegespacev2/Models/NpediaPosts.kt @@ -4,7 +4,8 @@ package com.ap.collegespacev2.Models * Created by anirudh on 26/07/17. */ data class NpediaPosts (var ID : Int , var title : String , var content : String , - var link : String , var author : Author , var excerpt : String) { - + var link : String , var author : Author , + var excerpt : String , var featured_image : FeaturedImage) { data class Author(var username : String , var avatar : String) + data class FeaturedImage(var guid : String) } \ No newline at end of file diff --git a/app/src/main/java/com/ap/collegespacev2/NSITpediaPostDetails.java b/app/src/main/java/com/ap/collegespacev2/NSITpediaPostDetails.java new file mode 100644 index 0000000..a14294e --- /dev/null +++ b/app/src/main/java/com/ap/collegespacev2/NSITpediaPostDetails.java @@ -0,0 +1,98 @@ +package com.ap.collegespacev2; + +import android.content.Intent; +import android.graphics.drawable.Drawable; +import android.net.Uri; +import android.support.v7.app.ActionBarActivity; +import android.os.Bundle; +import android.text.Html; +import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.webkit.WebView; +import android.widget.ImageView; +import android.widget.TextView; + +import com.ap.collegespacev2.Helper.PostViewer; +import com.bumptech.glide.Glide; + +import java.io.FileNotFoundException; +import java.io.InputStream; + +public class NSITpediaPostDetails extends ActionBarActivity { + + public static final String TAG = "NSITpediaPostDetails" ; + TextView tvTitle ; + WebView webView ; + ImageView ivFeaturedImage ; + String link , title; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_nsitpedia_post_details); + + tvTitle = (TextView) findViewById(R.id.tvTitleNPediaDetails); + webView = (WebView) findViewById(R.id.webViewNsitPedia) ; + + ivFeaturedImage = (ImageView)findViewById(R.id.ivFeaturedImageNPediaDetails) ; + getSupportActionBar().setTitle("NSITpedia"); + + title = getIntent().getStringExtra("title") ; + String featured_image = getIntent().getStringExtra("featured_image") ; + String content = getIntent().getStringExtra("content") ; + String author = getIntent().getStringExtra("author") ; + link = getIntent().getStringExtra("link") ; + + + tvTitle.setText(title); + webView.setWebViewClient(new PostViewer()); + webView.setBackgroundColor(0xffeeeeee);//Android's default background color + webView.loadData(content, "text/html", "utf-8"); + + Glide.with(this).load(featured_image).into(ivFeaturedImage) ; + + + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + + MenuInflater mi = getMenuInflater() ; + mi.inflate(R.menu.details , menu); + MenuItem fav = menu.findItem(R.id.menu_fav); + fav.setVisible(false); + + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + + switch(item.getItemId()){ + + case R.id.menu_share : + Intent sendIntent = new Intent(); + sendIntent.setAction(Intent.ACTION_SEND); + sendIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(title) + "\n" + link); + sendIntent.setType("text/plain"); + startActivity(Intent.createChooser(sendIntent, getString(R.string.action_share))); + break ; + case R.id.menu_web : startActivity(new Intent(Intent.ACTION_VIEW , Uri.parse(link))); + break ; + case R.id.menu_fav : + break; + case R.id.menu_not_fav : + break ; + default: + Log.d(TAG, "onOptionsItemSelected: Wrong option " ); + + } + + return super.onOptionsItemSelected(item); + } + + + +} diff --git a/app/src/main/java/com/ap/collegespacev2/NsitPediaActivity.java b/app/src/main/java/com/ap/collegespacev2/NsitPediaActivity.java index ecf1745..db029ce 100644 --- a/app/src/main/java/com/ap/collegespacev2/NsitPediaActivity.java +++ b/app/src/main/java/com/ap/collegespacev2/NsitPediaActivity.java @@ -1,10 +1,13 @@ package com.ap.collegespacev2; +import android.app.ProgressDialog; +import android.content.Intent; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; +import android.view.View; import com.ap.collegespacev2.Adapter.NsitPediaAdapter; import com.ap.collegespacev2.Helper.NsitPediaApi; @@ -33,8 +36,23 @@ protected void onCreate(Bundle savedInstanceState) { rvPosts = (RecyclerView)findViewById(R.id.rvPostsNsitPedia) ; rvPosts.setLayoutManager(new LinearLayoutManager(this)); listPostsNPedias = new ArrayList<>() ; - adapter = new NsitPediaAdapter(listPostsNPedias , this) ; + adapter = new NsitPediaAdapter(listPostsNPedias, this, new NsitPediaAdapter.onItemCLickedListener() { + @Override + public void onItemCLicked(View view , NpediaPosts thisPost) { + Log.d(TAG, "onItemCLicked: "); + Intent i = new Intent(NsitPediaActivity.this , NSITpediaPostDetails.class) ; + i.putExtra("title" , thisPost.getTitle()) ; + i.putExtra("content" , thisPost.getContent()) ; + i.putExtra("featured_image" , thisPost.getFeatured_image().getGuid()) ; + i.putExtra("author" , thisPost.getAuthor().getUsername()) ; + i.putExtra("link" , thisPost.getLink()) ; + startActivity(i); + } + }) ; rvPosts.setAdapter(adapter); + final ProgressDialog pd = new ProgressDialog(this) ; + pd.setMessage("Loading Please wait..."); + pd.show(); Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://nsitpedia.collegespace.in/wp-json/") @@ -45,8 +63,12 @@ protected void onCreate(Bundle savedInstanceState) { api.getPosts().enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { + if (pd.isShowing()){ + pd.dismiss(); + } adapter.updatePosts(response.body()); + } @Override diff --git a/app/src/main/res/layout/activity_nsitpedia_post_details.xml b/app/src/main/res/layout/activity_nsitpedia_post_details.xml new file mode 100644 index 0000000..8c5272e --- /dev/null +++ b/app/src/main/res/layout/activity_nsitpedia_post_details.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout/list_nsitpedia_posts.xml b/app/src/main/res/layout/list_nsitpedia_posts.xml index 16ef203..7777f01 100644 --- a/app/src/main/res/layout/list_nsitpedia_posts.xml +++ b/app/src/main/res/layout/list_nsitpedia_posts.xml @@ -42,6 +42,11 @@ android:layout_height="wrap_content" android:text="Title" android:textSize="45sp"/> + Date: Mon, 31 Jul 2017 15:47:55 +0530 Subject: [PATCH 3/3] added database for NSITpedia --- .../Adapter/NsitPediaAdapter.java | 26 ++-- .../ap/collegespacev2/Helper/DBHelper.java | 4 +- .../com/ap/collegespacev2/Helper/DBUtils.java | 18 +++ .../collegespacev2/Helper/NSITpediaTable.java | 124 ++++++++++++++++++ .../ap/collegespacev2/Models/DBNPediaPosts.kt | 6 + .../ap/collegespacev2/Models/NpediaPosts.kt | 12 +- .../collegespacev2/NSITpediaPostDetails.java | 7 +- .../ap/collegespacev2/NsitPediaActivity.java | 79 +++++++---- 8 files changed, 232 insertions(+), 44 deletions(-) create mode 100644 app/src/main/java/com/ap/collegespacev2/Helper/DBUtils.java create mode 100644 app/src/main/java/com/ap/collegespacev2/Helper/NSITpediaTable.java create mode 100644 app/src/main/java/com/ap/collegespacev2/Models/DBNPediaPosts.kt diff --git a/app/src/main/java/com/ap/collegespacev2/Adapter/NsitPediaAdapter.java b/app/src/main/java/com/ap/collegespacev2/Adapter/NsitPediaAdapter.java index 474adf9..6ab365e 100644 --- a/app/src/main/java/com/ap/collegespacev2/Adapter/NsitPediaAdapter.java +++ b/app/src/main/java/com/ap/collegespacev2/Adapter/NsitPediaAdapter.java @@ -24,9 +24,9 @@ public class NsitPediaAdapter extends RecyclerView.Adapter arrayListPosts ; Context mContext ; - onItemCLickedListener onItemCLickedListener ; + OnItemCLickedListener onItemCLickedListener; - public NsitPediaAdapter(ArrayList arrayListPosts, Context mContext , onItemCLickedListener oicl) { + public NsitPediaAdapter(ArrayList arrayListPosts, Context mContext , OnItemCLickedListener oicl) { this.arrayListPosts = arrayListPosts; this.mContext = mContext; this.onItemCLickedListener = oicl ; @@ -36,7 +36,7 @@ public void updatePosts(ArrayList arrayListPosts){ this.arrayListPosts = arrayListPosts ; notifyDataSetChanged(); } - public interface onItemCLickedListener{ + public interface OnItemCLickedListener { void onItemCLicked(View view , NpediaPosts thisPost); } @Override @@ -52,14 +52,22 @@ public void onBindViewHolder(PostsViewHolder holder, int position) { holder.tvTitle.setText(thisPost.getTitle()); holder.tvDescription.setText(Html.fromHtml(thisPost.getExcerpt())); holder.tvAuthor.setText(thisPost.getAuthor().getUsername()); + if(thisPost.getAuthor().getAvatar().equals("avatar")) { + Glide.with(mContext) + .load(R.drawable.ic_person) + .into(holder.ivAvatar); + }else{ + Glide.with(mContext) + .load(thisPost.getAuthor().getAvatar()) + .into(holder.ivAvatar); + } - Glide.with(mContext) - .load(thisPost.getAuthor().getAvatar()) - .into(holder.ivAvatar); + if(!thisPost.getFeatured_image().getGuid().equals("guid")){ + Glide.with(mContext) + .load(thisPost.getFeatured_image().getGuid()) + .into(holder.ivFeaturedImage) ; - Glide.with(mContext) - .load(thisPost.getFeatured_image().getGuid()) - .into(holder.ivFeaturedImage) ; + } holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/app/src/main/java/com/ap/collegespacev2/Helper/DBHelper.java b/app/src/main/java/com/ap/collegespacev2/Helper/DBHelper.java index 3c7dbc5..a942e2f 100644 --- a/app/src/main/java/com/ap/collegespacev2/Helper/DBHelper.java +++ b/app/src/main/java/com/ap/collegespacev2/Helper/DBHelper.java @@ -25,9 +25,10 @@ public class DBHelper extends SQLiteOpenHelper public static final String TABLE_UPDATES_DATE = "date"; public static final String TABLE_UPDATES_MODIFIED = "modified"; + public DBHelper(Context context) { - super(context, DATABASE_NAME, null, 1); + super(context, DATABASE_NAME, null, 2); } @Override @@ -40,6 +41,7 @@ public void onCreate(SQLiteDatabase db) TABLE_UPDATES_LINK + " TEXT, " + TABLE_UPDATES_DATE + " TEXT, " + TABLE_UPDATES_MODIFIED + " TEXT)"); + db.execSQL(NSITpediaTable.CMD_CREATE_TABLE); Log.i("DBHelper", "onCreate()"); } diff --git a/app/src/main/java/com/ap/collegespacev2/Helper/DBUtils.java b/app/src/main/java/com/ap/collegespacev2/Helper/DBUtils.java new file mode 100644 index 0000000..c4a2d59 --- /dev/null +++ b/app/src/main/java/com/ap/collegespacev2/Helper/DBUtils.java @@ -0,0 +1,18 @@ +package com.ap.collegespacev2.Helper; + +/** + * Created by anirudh on 29/07/17. + */ + +public class DBUtils { + public static final String CREATE_TABLE = " CREATE TABLE " ; + public static final String LBR = " ( " ; + public static final String RBR = " ) " ; + public static final String COMMA = " , " ; + public static final String SEMI = " ; " ; + + public static final String TYPE_INTEGER = " INTEGER " ; + public static final String TYPE_TEXT = " TEXT " ; + public static final String TYPE_INT_PK = " INTEGER PRIMARY KEY " ; + public static final String TYPE_BOOLEAN = " BOOLEAN " ; +} diff --git a/app/src/main/java/com/ap/collegespacev2/Helper/NSITpediaTable.java b/app/src/main/java/com/ap/collegespacev2/Helper/NSITpediaTable.java new file mode 100644 index 0000000..4cc90ca --- /dev/null +++ b/app/src/main/java/com/ap/collegespacev2/Helper/NSITpediaTable.java @@ -0,0 +1,124 @@ +package com.ap.collegespacev2.Helper; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.SQLException; +import android.database.sqlite.SQLiteDatabase; +import android.util.Log; + +import com.ap.collegespacev2.Models.DBNPediaPosts; +import com.ap.collegespacev2.Models.NpediaPosts; + +import java.util.ArrayList; + +import static com.ap.collegespacev2.Helper.DBUtils.*; + +/** + * Created by anirudh on 29/07/17. + */ + +public class NSITpediaTable { + public static final String TAG = "NSITpediaTable"; + public static final String TABLE_NAME = "NSITpedia"; + + interface Columns { + String COL_ID = "id"; + String COL_EXCERPT = "excerpt"; + String COL_TITLE = "title"; + String COL_AUTHOR_NAME = "author"; + String COL_AUTHOR_AVATAR = "avatar"; + String COL_IMAGE = "image"; + String COL_CONTENT = "content" ; + + } + + public static final String CMD_CREATE_TABLE = + CREATE_TABLE + + TABLE_NAME + LBR + + Columns.COL_ID + TYPE_INT_PK + COMMA + + Columns.COL_TITLE + TYPE_TEXT + COMMA + + Columns.COL_EXCERPT + TYPE_TEXT + COMMA + + Columns.COL_CONTENT + TYPE_TEXT + COMMA + + Columns.COL_AUTHOR_NAME + TYPE_TEXT + + RBR + SEMI; + + + public static ArrayList getNPediaPosts(SQLiteDatabase db) { + + ArrayList posts = new ArrayList<>(); + ArrayList npediaPostses = new ArrayList<>() ; + Cursor csr = db.query(TABLE_NAME + , new String[]{ + Columns.COL_TITLE, + Columns.COL_ID, + Columns.COL_EXCERPT, + Columns.COL_AUTHOR_NAME , + Columns.COL_CONTENT + }, + null, + null, + null, + null, + Columns.COL_ID + " DESC" + ); + while (csr.moveToNext()) { + posts.add( + new DBNPediaPosts( + csr.getInt(csr.getColumnIndex(Columns.COL_ID)), + csr.getString(csr.getColumnIndex(Columns.COL_TITLE)), + csr.getString(csr.getColumnIndex(Columns.COL_EXCERPT)), + csr.getString(csr.getColumnIndex(Columns.COL_AUTHOR_NAME))) + ); + npediaPostses.add( + new NpediaPosts( + csr.getInt(csr.getColumnIndex(Columns.COL_ID)), + csr.getString(csr.getColumnIndex(Columns.COL_TITLE)), + csr.getString(csr.getColumnIndex(Columns.COL_CONTENT)) , + "link" , + new NpediaPosts.Author(csr.getString(csr.getColumnIndex(Columns.COL_AUTHOR_NAME)) , "avatar") , + csr.getString(csr.getColumnIndex(Columns.COL_EXCERPT)), + new NpediaPosts.FeaturedImage("guid") + ) + ) ; + + } + + Log.d(TAG, "getNPediaPosts: " + npediaPostses.size()); + return npediaPostses; + } + + + public static void addData(SQLiteDatabase db, int id, String title, String excerpt, String author_name , String content) { + + Cursor c = db.query(TABLE_NAME , + new String[]{Columns.COL_ID} , Columns.COL_ID + "= ?" + ,new String[]{String.valueOf(id)} + , null ,null ,null , null) ; + + if(c.moveToNext()){ + Log.d(TAG, "addData: Not added already exist : " + id); + return; + } + ContentValues cv = new ContentValues(); + cv.put(Columns.COL_ID, id); + cv.put(Columns.COL_TITLE, title); + cv.put(Columns.COL_EXCERPT, excerpt); + cv.put(Columns.COL_AUTHOR_NAME, author_name); + cv.put(Columns.COL_CONTENT , content); + db.insert(TABLE_NAME, null, cv); + + } + + public static void deleteTable(SQLiteDatabase db) { + db.delete(TABLE_NAME, null, null); + } + + public static void dropTable(SQLiteDatabase db) { + db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); + } + + public static void createTable(SQLiteDatabase db) { + db.execSQL(CMD_CREATE_TABLE); + } +} diff --git a/app/src/main/java/com/ap/collegespacev2/Models/DBNPediaPosts.kt b/app/src/main/java/com/ap/collegespacev2/Models/DBNPediaPosts.kt new file mode 100644 index 0000000..230d7cb --- /dev/null +++ b/app/src/main/java/com/ap/collegespacev2/Models/DBNPediaPosts.kt @@ -0,0 +1,6 @@ +package com.ap.collegespacev2.Models + +/** + * Created by anirudh on 29/07/17. + */ +data class DBNPediaPosts(var id : Int , var title : String , var excerpt : String , var Author : String) \ No newline at end of file diff --git a/app/src/main/java/com/ap/collegespacev2/Models/NpediaPosts.kt b/app/src/main/java/com/ap/collegespacev2/Models/NpediaPosts.kt index 52d4e90..e648c9d 100644 --- a/app/src/main/java/com/ap/collegespacev2/Models/NpediaPosts.kt +++ b/app/src/main/java/com/ap/collegespacev2/Models/NpediaPosts.kt @@ -1,11 +1,13 @@ package com.ap.collegespacev2.Models +import android.support.annotation.Nullable + /** * Created by anirudh on 26/07/17. */ -data class NpediaPosts (var ID : Int , var title : String , var content : String , - var link : String , var author : Author , - var excerpt : String , var featured_image : FeaturedImage) { - data class Author(var username : String , var avatar : String) - data class FeaturedImage(var guid : String) +data class NpediaPosts (var ID : Int, var title : String, var content : String, + var link : String, var author : Author, + var excerpt : String, var featured_image : FeaturedImage) { + data class Author(var username : String , var avatar : String) + data class FeaturedImage( var guid : String) } \ No newline at end of file diff --git a/app/src/main/java/com/ap/collegespacev2/NSITpediaPostDetails.java b/app/src/main/java/com/ap/collegespacev2/NSITpediaPostDetails.java index a14294e..d16be53 100644 --- a/app/src/main/java/com/ap/collegespacev2/NSITpediaPostDetails.java +++ b/app/src/main/java/com/ap/collegespacev2/NSITpediaPostDetails.java @@ -26,7 +26,8 @@ public class NSITpediaPostDetails extends ActionBarActivity { TextView tvTitle ; WebView webView ; ImageView ivFeaturedImage ; - String link , title; + String link , title ; + Integer id ; @Override protected void onCreate(Bundle savedInstanceState) { @@ -43,8 +44,8 @@ protected void onCreate(Bundle savedInstanceState) { String featured_image = getIntent().getStringExtra("featured_image") ; String content = getIntent().getStringExtra("content") ; String author = getIntent().getStringExtra("author") ; - link = getIntent().getStringExtra("link") ; - + link = getIntent().getStringExtra("link") ; + id = getIntent().getIntExtra("id" , 0) ; tvTitle.setText(title); webView.setWebViewClient(new PostViewer()); diff --git a/app/src/main/java/com/ap/collegespacev2/NsitPediaActivity.java b/app/src/main/java/com/ap/collegespacev2/NsitPediaActivity.java index db029ce..faffa86 100644 --- a/app/src/main/java/com/ap/collegespacev2/NsitPediaActivity.java +++ b/app/src/main/java/com/ap/collegespacev2/NsitPediaActivity.java @@ -2,14 +2,17 @@ import android.app.ProgressDialog; import android.content.Intent; -import android.support.v7.app.ActionBarActivity; +import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.View; +import android.widget.Toast; import com.ap.collegespacev2.Adapter.NsitPediaAdapter; +import com.ap.collegespacev2.Helper.DBHelper; +import com.ap.collegespacev2.Helper.NSITpediaTable; import com.ap.collegespacev2.Helper.NsitPediaApi; import com.ap.collegespacev2.Models.NpediaPosts; @@ -23,50 +26,73 @@ public class NsitPediaActivity extends BaseActivity { - public static final String TAG = "NsitPediaActivity : " ; - RecyclerView rvPosts ; - NsitPediaAdapter adapter ; - ArrayList listPostsNPedias ; + public static final String TAG = "NsitPediaActivity : "; + RecyclerView rvPosts; + NsitPediaAdapter adapter; + ArrayList listPostsNPedias; + DBHelper dbHelper; + SQLiteDatabase db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_nsit_pedia , 2); + setContentView(R.layout.activity_nsit_pedia, 2); getSupportActionBar().setTitle("NSITpedia"); - rvPosts = (RecyclerView)findViewById(R.id.rvPostsNsitPedia) ; + rvPosts = (RecyclerView) findViewById(R.id.rvPostsNsitPedia); rvPosts.setLayoutManager(new LinearLayoutManager(this)); - listPostsNPedias = new ArrayList<>() ; - adapter = new NsitPediaAdapter(listPostsNPedias, this, new NsitPediaAdapter.onItemCLickedListener() { + dbHelper = new DBHelper(this); + db = dbHelper.getWritableDatabase(); + + listPostsNPedias = new ArrayList<>(); + adapter = new NsitPediaAdapter(listPostsNPedias, this, new NsitPediaAdapter.OnItemCLickedListener() { @Override - public void onItemCLicked(View view , NpediaPosts thisPost) { + public void onItemCLicked(View view, NpediaPosts thisPost) { Log.d(TAG, "onItemCLicked: "); - Intent i = new Intent(NsitPediaActivity.this , NSITpediaPostDetails.class) ; - i.putExtra("title" , thisPost.getTitle()) ; - i.putExtra("content" , thisPost.getContent()) ; - i.putExtra("featured_image" , thisPost.getFeatured_image().getGuid()) ; - i.putExtra("author" , thisPost.getAuthor().getUsername()) ; - i.putExtra("link" , thisPost.getLink()) ; + Intent i = new Intent(NsitPediaActivity.this, NSITpediaPostDetails.class); + i.putExtra("title", thisPost.getTitle()); + i.putExtra("content", thisPost.getContent()); + i.putExtra("featured_image", thisPost.getFeatured_image().getGuid()); + i.putExtra("author", thisPost.getAuthor().getUsername()); + i.putExtra("link", thisPost.getLink()); + i.putExtra("id", thisPost.getID()); startActivity(i); } - }) ; + }); + + + listPostsNPedias = NSITpediaTable.getNPediaPosts(db) ; + adapter.updatePosts(listPostsNPedias); rvPosts.setAdapter(adapter); - final ProgressDialog pd = new ProgressDialog(this) ; - pd.setMessage("Loading Please wait..."); - pd.show(); + Log.d(TAG, "onCreate: deleted DataBase"); + Log.d(TAG, "onCreate: " + NSITpediaTable.getNPediaPosts(db).size()); Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://nsitpedia.collegespace.in/wp-json/") .addConverterFactory(GsonConverterFactory.create()) - .build() ; - NsitPediaApi api = retrofit.create(NsitPediaApi.class) ; + .build(); + NsitPediaApi api = retrofit.create(NsitPediaApi.class); api.getPosts().enqueue(new Callback>() { @Override - public void onResponse(Call> call, Response> response) { - if (pd.isShowing()){ - pd.dismiss(); - } + public void onResponse(Call> call, final Response> response) { + adapter.updatePosts(response.body()); + new Thread(new Runnable() { + @Override + public void run() { + for (NpediaPosts post : response.body()) { + NSITpediaTable.addData( + db, + post.getID(), + post.getTitle(), + post.getExcerpt(), + post.getAuthor().getUsername() , + post.getContent() + ); + } + } + }).run(); + } @@ -74,6 +100,7 @@ public void onResponse(Call> call, Response> call, Throwable t) { Log.d(TAG, "onFailure: "); + Toast.makeText(NsitPediaActivity.this, "Connection error", Toast.LENGTH_SHORT).show(); } }); }