Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.mvvmlivedatarxjava;
- import androidx.appcompat.app.AppCompatActivity;
- import androidx.lifecycle.ViewModelProviders;
- import androidx.recyclerview.widget.LinearLayoutManager;
- import androidx.recyclerview.widget.RecyclerView;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.ProgressBar;
- import android.widget.RelativeLayout;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.example.mvvmlivedatarxjava.adapter.NewsAdapter;
- import com.example.mvvmlivedatarxjava.model.Article;
- import com.example.mvvmlivedatarxjava.model.Status;
- import com.example.mvvmlivedatarxjava.viewmodel.MainViewModel;
- import com.google.android.material.snackbar.Snackbar;
- import java.util.ArrayList;
- import java.util.List;
- public class MainActivity extends AppCompatActivity {
- List<Article> articles = new ArrayList<>();
- NewsAdapter newsAdapter;
- private RelativeLayout relativeLayout;
- private ProgressBar progressBar;
- MainViewModel mainViewModel;
- RecyclerView recyclerNews;
- LinearLayoutManager linearLayoutManager;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- recyclerNews = findViewById(R.id.recyclerViewData);
- progressBar = findViewById(R.id.progressBarData);
- relativeLayout = findViewById(R.id.relativeLayoutData);
- mainViewModel = ViewModelProviders.of(this).get(MainViewModel.class);
- mainViewModel.init();
- setRecyclerView();
- mainViewModel.getIsLoading().observe(this, loading ->{
- if (loading)
- progressBar.setVisibility(View.VISIBLE);
- else
- progressBar.setVisibility(View.GONE);
- });
- mainViewModel.getError().observe(this, error->{
- callSnackBar("Terjadi Kesalahan, Silahkan coba lagi");
- });
- mainViewModel.getMainRespository().observe(this, responseNews ->{
- articles.addAll(responseNews.getArticles());
- newsAdapter.notifyDataSetChanged();
- });
- }
- private void callSnackBar(String message) {
- // Snackbar.make(linearLayout, message, Snackbar.LENGTH_LONG).setAction("REFRESH", new View.OnClickListener() {
- // @Override
- // public void onClick(View v) {
- // callData(pageawal);
- // }
- // }).show();
- Snackbar snackbar = Snackbar
- .make(relativeLayout, message, Snackbar.LENGTH_LONG)
- .setAction("RETRY", new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- mainViewModel.getMainRespository().observe(MainActivity.this, responseNews -> {
- articles.addAll(responseNews.getArticles());
- newsAdapter.notifyDataSetChanged();
- });
- }
- });
- snackbar.setActionTextColor(getResources().getColor(R.color.colorPrimary));
- View sbView = snackbar.getView();
- TextView textView = sbView.findViewById(com.google.android.material.R.id.snackbar_text);
- textView.setTextColor(getResources().getColor(R.color.colorPrimaryDark));
- snackbar.show();
- }
- private void setRecyclerView() {
- linearLayoutManager = new LinearLayoutManager(this);
- newsAdapter = new NewsAdapter(articles, this);
- newsAdapter.setOnItemClick(article -> Toast.makeText(getApplicationContext(), article.getTitle(), Toast.LENGTH_SHORT).show());
- recyclerNews.setHasFixedSize(true);
- recyclerNews.setLayoutManager(linearLayoutManager);
- recyclerNews.setAdapter(newsAdapter);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement