Android Open Source - mg-android-app Item List Activity






From Project

Back to project page mg-android-app.

License

The source code is released under:

MIT License

If you think the Android project mg-android-app 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.github.tscholze.mgapp.mobile;
/* w  w  w  .j av a2  s  .  c om*/
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import at.theengine.android.simple_rss2_android.RSSItem;
import at.theengine.android.simple_rss2_android.SimpleRss2Parser;
import at.theengine.android.simple_rss2_android.SimpleRss2ParserCallback;

import java.util.ArrayList;
import java.util.List;

/**
 * Contains all information and methods to provide a item list
 * activity of fetched rss items.
 */
public class ItemListActivity
        extends Activity
{

    private final static String FEED_URL = "http://mobilegeeks.de/feed";
    public final static String EXTRA_SELECTED_ITEM_CONTENT = "com.github.tscholze.mgapp.mobile.ItemListActivity.selectedItemContent";
    public final static String EXTRA_SELECTED_ITEM_TITLE = "com.github.tscholze.mgapp.mobile.ItemListActivity.selectedItemTitle";

    private SimpleRss2ParserCallback onParsedCallback;
    private ItemListActivity currentActivity;
    private ListView feedItems;

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

        currentActivity = this;
        feedItems = (ListView)findViewById(R.id.feedItems);
        feedItems.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id)
            {
                RSSItem selectedItem = (RSSItem)feedItems.getItemAtPosition(position);
                handlePostClick(selectedItem);
            }
        });

        new SimpleRss2Parser(FEED_URL, getCallback()).parseAsync();
    }

    private void handlePostClick(RSSItem selectedItem)
    {
        Intent intent = new Intent(this, ItemDetailActivity.class);
        intent.putExtra(EXTRA_SELECTED_ITEM_CONTENT, selectedItem.getContent());
        intent.putExtra(EXTRA_SELECTED_ITEM_TITLE, selectedItem.getTitle());
        startActivity(intent);
    }

    /**
     * Describes what happens after the parser finished.
     * On success set adapter from the item list to the view.
     * On error make a toast to inform the user.
     *
     * @return Callback method.
     */
    private SimpleRss2ParserCallback getCallback()
    {
        if (onParsedCallback == null)
        {
            onParsedCallback = new SimpleRss2ParserCallback()
            {

                @Override
                public void onFeedParsed(List<RSSItem> items)
                {
                    feedItems.setAdapter(new RSSItemListAdapter(currentActivity, R.layout.list_item,
                            (ArrayList<RSSItem>)items));
                }

                @Override
                public void onError(Exception ex)
                {
                    Toast.makeText(currentActivity, ex.getMessage(), Toast.LENGTH_SHORT).show();
                }
            };
        }

        return onParsedCallback;
    }

    /**
     * List adapter to create rss item list views.
     */
    private class RSSItemListAdapter
            extends ArrayAdapter<RSSItem>
    {
        private ArrayList<RSSItem> items;
        private Context context;
        private int layout;

        public RSSItemListAdapter(Context context, int layout, ArrayList<RSSItem> items)
        {
            super(context, layout, items);
            this.items = items;
            this.context = context;
            this.layout = layout;
        }

        public View getView(int position, View convertView, ViewGroup parent)
        {
            if (convertView == null)
            {
                LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                convertView = inflater.inflate(layout, null);
            }

            RSSItem item = items.get(position);
            if (item != null)
            {
                TextView feedPubDate = ((TextView)convertView.findViewById(R.id.feedPubDate));
                TextView feedTitle = ((TextView)convertView.findViewById(R.id.feedTitle));
                feedPubDate.setText(item.getDate());
                feedTitle.setText(item.getTitle());
            }

            return convertView;
        }
    }
}




Java Source Code List

com.github.tscholze.mgapp.mobile.ApplicationTest.java
com.github.tscholze.mgapp.mobile.ItemDetailActivity.java
com.github.tscholze.mgapp.mobile.ItemListActivity.java