FileDocCategorySizeDatePackage
MyRssReader5.javaAPI DocAndroid 1.5 API10472Wed May 06 22:41:08 BST 2009com.example.codelab.rssexample

MyRssReader5

public class MyRssReader5 extends android.app.Activity implements android.widget.AdapterView.OnItemSelectedListener

(Omit source code)

Fields Summary
private android.widget.ListView
mRssList
private android.database.Cursor
mCur
private RssCursorAdapter
mAdap
private android.webkit.WebView
mWebView
private static final int
ADD_ELEMENT_REQUEST
private Logger
mLogger
Constructors Summary
Methods Summary
protected voidonActivityResult(int requestCode, int resultCode, android.content.Intent data)

        if(resultCode == RESULT_OK){
            switch (requestCode){
                case ADD_ELEMENT_REQUEST:
                      ContentValues vals = new ContentValues(5);
                      vals.put(RssContentProvider.TITLE, data.getStringExtra(RssContentProvider.TITLE));
                      vals.put(RssContentProvider.URL, data.getStringExtra(RssContentProvider.URL));
                      vals.put(RssContentProvider.CONTENT, data.getStringExtra(RssContentProvider.CONTENT));
                      vals.put(RssContentProvider.LAST_UPDATED, data.getIntExtra(RssContentProvider.LAST_UPDATED, 0));
                      Uri uri = getContentResolver().insert(
                              RssContentProvider.CONTENT_URI, 
                              vals);
                      if(uri != null){
                          // Tell the service to requery the service, then set
                          // it as the active selection.
                          Bundle startupVals = new Bundle(1);
                          startupVals.putString(RssService.RSS_URL, data.getStringExtra("URL"));
                          Intent startIntent = new Intent(RssService.class);
                          startIntent.putExtras(startupVals);
                          startService(startIntent);
                          mRssList.setSelection(mRssList.getCount() - 1);
                      }
                    break;
                default:
                    break;
            }
        }
    
public voidonCreate(android.os.Bundle savedInstanceState)

    
    
        
        super.onCreate(savedInstanceState);
                                                                                                    //
        // Load screen layout.
        setContentView(R.layout.main_screen2);
       
        // Populate ArrayAdapter and bind it to ListView
        mRssList = (ListView)findViewById(R.id.rssListView);
        mRssList.setOnItemSelectedListener(this);
        
        mWebView = (WebView)findViewById(R.id.rssWebView);
        
        mCur = managedQuery(RssContentProvider.CONTENT_URI, // Query for all items.
                       null, 
                       null, 
                       RssContentProvider.DEFAULT_SORT_ORDER);
               
        mAdap = new RssCursorAdapter(
                this,
                R.layout.list_element,                  // Our layout resource.
                mCur, 
                new String[]{RssContentProvider.TITLE}, // Columns to retrieve.
                new int[]{R.id.list_item});             // IDs of widgets to display 
        mRssList.setAdapter(mAdap);                    //      the corresponding column.
        
        // Set the last selected item.
        // (icicle is only set if this is being restarted).
        if(savedInstanceState != null && savedInstanceState.containsKey("lastIndexItem")){
            mRssList.setSelection(savedInstanceState.getInteger("lastIndexItem"));
        }
    
public booleanonCreateOptionsMenu(android.view.Menu menu)

        // Always call the superclass implementation to 
        // provide standard items.
        super.onCreateOptionsMenu(menu);
        
        menu.add(0, 0, R.string.menu_option_start, null);
        menu.add(0, 1, R.string.menu_option_stop, null);
        menu.add(0, 2, R.string.menu_option_add, null);
        menu.add(0, 3, R.string.menu_option_delete, null);
        menu.add(0, 4, R.string.menu_option_update, null);
        
        return true;
    
public voidonItemSelected(android.widget.AdapterView parent, android.view.View v, int position, long id)

        // Need to nest this in a try block because we get called sometimes
        // with the index of a recently deleted item.
        String content = "";
        try{
            content = mCur.getString(mCur.getColumnIndex(RssContentProvider.CONTENT));
            mLogger.info("MyRssReader5 content string:" + content);
        }
        catch (Exception e){
            // This method is sometimes called after a backing data item
            // is deleted. In that case, we don't want to throw an error.
            mLogger.warning("MyRssReader5.onItemSelected() couldn't get the content" +
                            "from the cursor " + e.getMessage()); 
        }
        mWebView.loadData(content, "text/html", "utf-8");
    
public voidonNothingSelected(android.widget.AdapterView parent)

        mWebView.loadData("<html><body><p>No selection chosen</p></body></html>", "text/html", "utf-8");   
    
public booleanonOptionsItemSelected(Menu.Item item)

        super.onOptionsItemSelected(item);
        
        switch (item.getId()){
            case 0:     // Start service
                Intent basicStartIntent = new Intent(RssService.class);
                startService(basicStartIntent);
                break;
            case 1:    // Stop service
                Intent stopIntent = new Intent(RssService.class);
                stopService(stopIntent);
                break;
            case 2:     // Add Item
                Intent addIntent = new Intent(AddRssItem.class);
                // Use an ID so that if we create a "remove item" form we
                // can tell which form is returning a value.
                startActivityForResult(addIntent, ADD_ELEMENT_REQUEST); 
                break;                       
            case 3:     // Delete item.
                if(mRssList.hasFocus()){
                    int currentSelectionIndex = mRssList.getSelectedItemIndex();
                    mLogger.info("MyRssReader5.onOptionsItemSelected(): Deleting list member:" + 
                            mRssList.getSelectedItemIndex());
                    // Create our content URI by adding the ID of the currently selected item using a 
                    // convenience method.
                    Long itemID = mAdap.getItemId(currentSelectionIndex);
                    getContentResolver().delete(RssContentProvider.CONTENT_URI.addId(itemID), null);
                }
                break;
            case 4:     // Requery all
                Bundle startupVals = new Bundle(1);
                startupVals.putBoolean(RssService.REQUERY_KEY, true);
                Intent requeryIntent = new Intent(RssService.class);
                startService(requeryIntent, startupVals);
                break;
            default:
                showAlert(null, "I have no idea what you clicked!", "ok", null, false, null);
                break;
        }
        return true;
    
public booleanonPrepareOptionsMenu(android.view.Menu menu)

        return true;
    
protected voidonSaveInstanceState(android.os.Bundle outState)

        int index = mRssList.getSelectedItemIndex();
        if(index > -1){
            outState.putInteger("lastIndexItem", index);
        }