com.digitallizard.bbcnewsreader.CategoryActivity.java Source code

Java tutorial

Introduction

Here is the source code for com.digitallizard.bbcnewsreader.CategoryActivity.java

Source

/*******************************************************************************
 * BBC News Reader
 * Released under the BSD License. See README or LICENSE.
 * Copyright (c) 2011, Digital Lizard (Oscar Key, Thomas Boby)
 * All rights reserved.
 ******************************************************************************/
package com.digitallizard.bbcnewsreader;

import java.util.ArrayList;

import android.content.Intent;
import android.os.Bundle;
import android.os.Messenger;
import android.support.v4.view.ViewPager;
import android.widget.ListView;

import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.MenuItem;
import com.digitallizard.bbcnewsreader.data.DatabaseHandler;
import com.digitallizard.bbcnewsreader.fragments.FrontpageFragment.FrontPageClickHandler;
import com.viewpagerindicator.TitlePageIndicator;

public class CategoryActivity extends SherlockFragmentActivity implements FrontPageClickHandler {
    public static final String EXTRA_CATEGORY_TITLE = "categoryTitle";

    private static final int DISPLAY_MODE_HANDSET = 0;
    private static final int DISPLAY_MODE_TABLET_LANDSCAPE = 1;

    ListView listView;
    DatabaseHandler database;
    ArrayList<Item> items;
    Messenger resourceMessenger;
    boolean resourceServiceBound;

    private int currentDisplayMode;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.category_activity);

        // determine which display mode is currently active
        if (getResources().getBoolean(R.bool.screen_xlarge)) {
            currentDisplayMode = DISPLAY_MODE_TABLET_LANDSCAPE;
        } else {
            currentDisplayMode = DISPLAY_MODE_HANDSET;
        }

        // do specific configuration for various screen sizes
        /*if (currentDisplayMode == DISPLAY_MODE_TABLET_LANDSCAPE) {
           // force landscape
           setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
           // display the correct category
           CategoryFragment fragment = (CategoryFragment) getSupportFragmentManager().findFragmentById(R.id.categoryFragment);
           fragment.displayCategory(getIntent().getStringExtra(EXTRA_CATEGORY_TITLE));
        }*/

        if (currentDisplayMode == DISPLAY_MODE_HANDSET) {
            // load the pager
            CategoryPagerAdapter adapter = new CategoryPagerAdapter(this, getSupportFragmentManager());
            ViewPager pager = (ViewPager) findViewById(R.id.categoryPager);
            pager.setAdapter(adapter);

            // bind the pager indicator
            TitlePageIndicator pagerIndicator = (TitlePageIndicator) findViewById(R.id.categoryPagerIndicator);
            pagerIndicator.setViewPager(pager);

            // set the pager position to the selected category
            pager.setCurrentItem(adapter.getPositionOfTitle(getIntent().getStringExtra(EXTRA_CATEGORY_TITLE)),
                    false); // no smooth scroll
        }
    }

    public void onItemClick(int id) {
        // launch the article activity
        Intent intent = new Intent(this, ArticleActivity.class);
        intent.putExtra(ArticleActivity.EXTRA_KEY_ITEM_ID, id);
        startActivity(intent);
    }

    public void onCategoryClick(String title) {
        // this should never be called in this case
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home) {
            this.finish();
            return true;
        } else {
            return super.onOptionsItemSelected(item);
        }
    }
}