Skip to content
This repository has been archived by the owner on Aug 5, 2023. It is now read-only.

Commit

Permalink
News Done
Browse files Browse the repository at this point in the history
  • Loading branch information
whoishusni committed Mar 27, 2020
1 parent 8d5014d commit b10e273
Show file tree
Hide file tree
Showing 32 changed files with 1,122 additions and 93 deletions.
8 changes: 6 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@ android {
applicationId "id.husni.covninfo"
minSdkVersion 22
targetSdkVersion 28
versionCode 3
versionName '2.0'
versionCode 4
versionName '2.5'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
buildConfigField("String", "API_NEWS", '"{USE YOUR API FROM APINEWS HERE (Api APINEWS Disini)}"')
}
buildTypes {
release {
Expand Down Expand Up @@ -49,4 +50,7 @@ dependencies {
implementation 'com.google.android.material:material:1.1.0'
//Preference
implementation 'androidx.preference:preference:1.1.0'
//Glide
implementation 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
}
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
android:roundIcon="@drawable/icon"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".activity.NewsDetail" />
<activity android:name=".activity.IndonesiaProvinceActivity" />
<activity
android:name=".activity.SplashActivity"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,8 @@ public void onChanged(ArrayList<IndonesiaProvinsiModel> indonesiaProvinsiModels)
});
}

private void refreshing(boolean b) {
if (b) {
private void refreshing(boolean isRefreshing) {
if (isRefreshing) {
swipeRefreshProvince.setRefreshing(true);
} else {
swipeRefreshProvince.setRefreshing(false);
Expand Down
10 changes: 10 additions & 0 deletions app/src/main/java/id/husni/covninfo/activity/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import id.husni.covninfo.activity.SettingActivity;
import id.husni.covninfo.fragment.IdnFragment;
import id.husni.covninfo.fragment.HistoryFragment;
import id.husni.covninfo.fragment.NewsFragment;
import id.husni.covninfo.fragment.SummaryFragment;

public class MainActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener {
Expand Down Expand Up @@ -74,6 +75,15 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
.replace(R.id.main_frame, historyFragment)
.commit();
return true;

//ke Fragment News
case R.id.newsMenu:
NewsFragment newsFragment = new NewsFragment();
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.main_frame,newsFragment)
.commit();
return true;
}
return false;
}
Expand Down
91 changes: 91 additions & 0 deletions app/src/main/java/id/husni/covninfo/activity/NewsDetail.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
/*
* Made With Love
* Author @Moh Husni Mubaraq
* Not for Commercial Purpose
*/

package id.husni.covninfo.activity;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.bumptech.glide.Glide;

import id.husni.covninfo.R;
import id.husni.covninfo.model.news.NewsModel;

public class NewsDetail extends AppCompatActivity {

public static final String PARCELABLE_PARSING_DATA = "parcelable_parsing_data" ;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news_detail);
if (getSupportActionBar() != null) {
getSupportActionBar().setTitle(R.string.news);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

TextView tvTitle = findViewById(R.id.tvNewsTitleDetail);
TextView tvSource = findViewById(R.id.tvNewsSourceDetail);
TextView tvAuthor = findViewById(R.id.tvNewsAuthorDetail);
TextView tvPublished = findViewById(R.id.tvNewsPublishedDetail);
TextView tvDesc = findViewById(R.id.tvNewsDescDetail);
TextView tvContent = findViewById(R.id.tvNewsContentDetail);

ImageView imageView = findViewById(R.id.imageDetailNews);

Button btnMore = findViewById(R.id.btnMore);

NewsModel model = getIntent().getParcelableExtra(PARCELABLE_PARSING_DATA);

tvTitle.setText(model.getTitle());
tvSource.setText(String.format("%s %s", getResources().getString(R.string.sourceNews), model.getSource().getName()));
if (model.getAuthor() == null) {
tvAuthor.setText(R.string.editor);
} else {
tvAuthor.setText(String.format("%s %s", getResources().getString(R.string.authorNews), model.getAuthor()));
}
tvPublished.setText(String.format("%s %s", getResources().getString(R.string.dateNews), model.getPublishedAt()));
tvDesc.setText(model.getDescription());

if (model.getContent() == null) {
tvContent.setText(getResources().getString(R.string.description_unavailable));
} else {
tvContent.setText(model.getContent());
}
Glide.with(this)
.load(model.getUrlToImage())
.into(imageView);

btnMore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String URL = model.getUrl();
Uri urlUri = Uri.parse(URL);
Intent toUrl = new Intent(Intent.ACTION_VIEW, urlUri);
startActivity(toUrl);
Toast.makeText(NewsDetail.this, getResources().getString(R.string.redirect), Toast.LENGTH_SHORT).show();
}
});
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
onBackPressed();
}
return super.onOptionsItemSelected(item);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public int getItemCount() {
return historyModels.size();
}

public class ViewHolder extends RecyclerView.ViewHolder {
public static class ViewHolder extends RecyclerView.ViewHolder {
final TextView lastUpdateDate;
final TextView tvConfirmed;
final TextView tvRecovered;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public int getItemCount() {
return indoList.size();
}

public class ViewHolder extends RecyclerView.ViewHolder {
public static class ViewHolder extends RecyclerView.ViewHolder {
final TextView tvConfirmed;
final TextView tvRecovered;
final TextView tvDeath;
Expand Down
95 changes: 95 additions & 0 deletions app/src/main/java/id/husni/covninfo/adapter/NewsAdapter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
/*
* Made With Love
* Author @Moh Husni Mubaraq
* Not for Commercial Purpose
*/

package id.husni.covninfo.adapter;

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;

import java.util.ArrayList;

import id.husni.covninfo.R;
import id.husni.covninfo.activity.NewsDetail;
import id.husni.covninfo.model.news.NewsModel;

public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.ViewHolder> {
private final ArrayList<NewsModel> newsModels = new ArrayList<>();
private final Context context;

public NewsAdapter(Context context) {
this.context = context;
}

public ArrayList<NewsModel> getNewsModels() {
return newsModels;
}

public void setNewsModels(ArrayList<NewsModel> itemModels) {
if (newsModels != null) {
if (newsModels.size() > 0) {
newsModels.clear();
}
newsModels.addAll(itemModels);
}
notifyDataSetChanged();
}

@NonNull
@Override
public NewsAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.news_item_holder,parent, false);
return new ViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull NewsAdapter.ViewHolder holder, int position) {
holder.tvTitle.setText(newsModels.get(position).getTitle());
holder.tvSource.setText(newsModels.get(position).getSource().getName());
Glide.with(context)
.load(newsModels.get(position).getUrlToImage())
.into(holder.imageNews);

holder.cvNews.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intentDetail = new Intent(context, NewsDetail.class);
intentDetail.putExtra(NewsDetail.PARCELABLE_PARSING_DATA,newsModels.get(position));
context.startActivity(intentDetail);
}
});
}

@Override
public int getItemCount() {
return newsModels.size();
}

public static class ViewHolder extends RecyclerView.ViewHolder {
final TextView tvTitle;
final TextView tvSource;
final ImageView imageNews;
final CardView cvNews;

ViewHolder(@NonNull View itemView) {
super(itemView);
tvTitle = itemView.findViewById(R.id.tvTitleNews);
tvSource = itemView.findViewById(R.id.tvSourceNews);
imageNews = itemView.findViewById(R.id.imageNews);
cvNews = itemView.findViewById(R.id.newsCardView);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,8 @@ public void onChanged(ArrayList<HistoryModel> historyModels) {
});
}

private void refreshingData(boolean b) {
if (b) {
private void refreshingData(boolean isRefresh) {
if (isRefresh) {
swipeRefreshLayout.setRefreshing(true);
} else {
swipeRefreshLayout.setRefreshing(false);
Expand Down
Loading

0 comments on commit b10e273

Please sign in to comment.