Android Open Source - TechDissected Article Activity






From Project

Back to project page TechDissected.

License

The source code is released under:

Apache License

If you think the Android project TechDissected listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.pkmmte.techdissected.activity;
/* w  w  w .ja v a 2  s. com*/
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.widget.SwipeRefreshLayout;
import android.view.View;
import com.pkmmte.pkrss.Article;
import com.pkmmte.pkrss.PkRSS;
import com.pkmmte.techdissected.R;
import com.pkmmte.techdissected.fragment.ArticleFragment;
import com.pkmmte.techdissected.view.PkSwipeRefreshLayout;
import java.util.List;

public class ArticleActivity extends FragmentActivity implements PkSwipeRefreshLayout.OnRefreshListener {
  // Argument Variables
  private String categoryName = null;
  private String feedUrl = null;
  private String articleUrl = null;
  private int articleId = -1;

  // Reference to current article
  private Article currentArticle = null;

  // Fragment Manager
  private FragmentManager fragmentManager;

  // Views
  private PkSwipeRefreshLayout mSwipeLayout;
  private View noContent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_article);

    retrieveArguments();
      initViews();
      mSwipeLayout.setContentPullEnabled(false);
      mSwipeLayout.setOnRefreshListener(this);
      mSwipeLayout.setColorSchemeResources(R.color.action_swipe_1, R.color.action_swipe_2,
                                           R.color.action_swipe_3, R.color.action_swipe_4);
      fragmentManager = getSupportFragmentManager();
      showContent();
    }

  private void retrieveArguments() {
    Bundle args = getIntent().getExtras();
    categoryName = args.getString(PkRSS.KEY_CATEGORY_NAME, null);
    feedUrl = args.getString(PkRSS.KEY_FEED_URL, null);
    articleUrl = args.getString(PkRSS.KEY_ARTICLE_URL, null);
    articleId = args.getInt(PkRSS.KEY_ARTICLE_ID, -1);
  }

  private void initViews() {
    noContent = findViewById(R.id.noContent);
    mSwipeLayout = (PkSwipeRefreshLayout) findViewById(R.id.swipeContainer);
  }

  private void showContent() {
    if(articleUrl != null && !articleUrl.isEmpty()) {
      if(currentArticle == null)
        loadArticle();
      else
        fragmentManager.beginTransaction().replace(R.id.articleContent, ArticleFragment.newInstance(currentArticle)).commit();
      return;
    }

    // Show current category as action bar title
    getActionBar().setTitle(categoryName);

    // Get list of articles
    List<Article> articleList = PkRSS.with(this).get(feedUrl);

    if(articleList == null || articleList.size() < 1)
      return;

    // Find article based on passed ID
    for(Article article : articleList) {
      if(article.getId() == articleId) {
        currentArticle = article;
        break;
      }
    }

    // Show current article
    fragmentManager.beginTransaction().replace(R.id.articleContent, ArticleFragment.newInstance(currentArticle)).commit();
  }

  private void loadArticle() {
    new AsyncTask<Void, Void, Void>() {
      @Override
      protected void onPreExecute() {
        noContent.setVisibility(View.VISIBLE);
        mSwipeLayout.setRefreshing(true);
      }

      @Override
      protected Void doInBackground(Void... params) {
        currentArticle = PkRSS.with(ArticleActivity.this).load(articleUrl).individual().getFirst();
        return null;
      }

      @Override
      protected void onPostExecute(Void p) {
        noContent.setVisibility(View.GONE);
        mSwipeLayout.setRefreshing(false);
        fragmentManager.beginTransaction().replace(R.id.articleContent, ArticleFragment.newInstance(currentArticle)).commit();
      }
    }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
  }

  /**
   * Proxy method for setting a scroll target from child
   * fragments. (Or other things with access to this Activity)
   * @param target
   */
  public void setScrollTarget(View target) {
    mSwipeLayout.setScrollTarget(target);
  }

  @Override
  public void onRefresh() {

  }
}




Java Source Code List

com.pkmmte.techdissected.ApplicationTest.java
com.pkmmte.techdissected.activity.ArticleActivity.java
com.pkmmte.techdissected.activity.MainActivity.java
com.pkmmte.techdissected.activity.SearchActivity.java
com.pkmmte.techdissected.adapter.AuthorAdapter.java
com.pkmmte.techdissected.adapter.CreditsLibraryAdapter.java
com.pkmmte.techdissected.adapter.FeedAdapter.java
com.pkmmte.techdissected.adapter.NavDrawerAdapter.java
com.pkmmte.techdissected.adapter.SettingsAdapter.java
com.pkmmte.techdissected.fragment.AboutFragment.java
com.pkmmte.techdissected.fragment.ArticleFragment.java
com.pkmmte.techdissected.fragment.FavoritesFragment.java
com.pkmmte.techdissected.fragment.FeedFragment.java
com.pkmmte.techdissected.fragment.SettingsFragment.java
com.pkmmte.techdissected.model.Author.java
com.pkmmte.techdissected.model.CreditsLibraryItem.java
com.pkmmte.techdissected.model.ListBuilder.java
com.pkmmte.techdissected.model.SettingsItem.java
com.pkmmte.techdissected.util.Base64DecoderException.java
com.pkmmte.techdissected.util.Base64.java
com.pkmmte.techdissected.util.Constants.java
com.pkmmte.techdissected.util.Dialogs.java
com.pkmmte.techdissected.util.IabException.java
com.pkmmte.techdissected.util.IabHelper.java
com.pkmmte.techdissected.util.IabResult.java
com.pkmmte.techdissected.util.Inventory.java
com.pkmmte.techdissected.util.Purchase.java
com.pkmmte.techdissected.util.RoundTransform.java
com.pkmmte.techdissected.util.Security.java
com.pkmmte.techdissected.util.SkuDetails.java
com.pkmmte.techdissected.util.Utils.java
com.pkmmte.techdissected.view.BakedBezierInterpolator.java
com.pkmmte.techdissected.view.CustomShareActionProvider.java
com.pkmmte.techdissected.view.FlowLayout.java
com.pkmmte.techdissected.view.HeaderGridView.java
com.pkmmte.techdissected.view.PkDrawerLayout.java
com.pkmmte.techdissected.view.PkScrollView.java
com.pkmmte.techdissected.view.PkSwipeRefreshLayout.java
com.pkmmte.techdissected.view.StickyScrollView.java
com.pkmmte.techdissected.view.SwipeProgressBar.java