Sean I noticed in the copy of my email that was sent to me, that the 
formatting went haywire at the point where I  started marking it, so here is 
another copy that I won't touch.

Mike

 package com.mmc2;



import java.sql.Date;
import java.util.ArrayList;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.os.Bundle;


import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;

import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

import android.view.Menu;
import android.view.MenuItem;
import android.view.ContextMenu;
import android.view.SubMenu;
import android.widget.AdapterView;;



public class todolist extends Activity {
 static final private int BACK_TO_START = Menu.FIRST + 10;
 static final private int ADD_NEW_TODO = Menu.FIRST + 11;
    static final private int REMOVE_TODO = Menu.FIRST + 12;

 static final private int REPORTS = Menu.FIRST;
 static final private int MISSION = Menu.FIRST + 1;
 static final private int FOCUS = Menu.FIRST + 2;
 static final private int INPUT = Menu.FIRST + 3;
 static final private int CASH_COUNT = Menu.FIRST + 4;
 static final private int SETUP = Menu.FIRST + 5;
 static final private int OUTPUT = Menu.FIRST + 6;

 static final private int subSetupTitle = SubMenu.FIRST;
 static final private int subSetupSetup = SubMenu.FIRST+1;

 private ArrayList<ToDoItem> todoItems;
 private ListView myListView;
 private EditText myEditText;
// private ArrayAdapter<ToDoItem>aa;
 private ToDoItemAdapter aa;

 private static final String TEXT_ENTRY_KEY = "TEXT_ENTRY_KEY";
 private static final String ADDING_ITEM_KEY = "ADDING_ITEM_KEY";
 private static final String SELECTED_INDEX_KEY ="SELECTED_INDEX_KEY";

 @Override
 public void onDestroy() {
  super.onDestroy();
  toDoDBAdapter.close();
 }

 @Override
 protected void onPause() {
  super.onPause();
  SharedPreferences uistate = getPreferences(0);
  SharedPreferences.Editor editor = uistate.edit();
  editor.putString(TEXT_ENTRY_KEY, myEditText.getText().toString());
  editor.putBoolean(ADDING_ITEM_KEY, addingNew);

  editor.commit();
 }

 private void restoreUIState() {
  SharedPreferences settings = getPreferences(Activity.MODE_PRIVATE);
  String text = settings.getString(TEXT_ENTRY_KEY, "");
  Boolean adding = settings.getBoolean(ADDING_ITEM_KEY, false);
  myListView.setSelection(settings.getInt(SELECTED_INDEX_KEY, -1));
  if (adding)  {
   addNewItem();
   myEditText.setText(text);
   toDoListCursor.requery();
  }

 }

 @Override
 public void onSaveInstanceState(Bundle outState) {
  outState.putInt(SELECTED_INDEX_KEY, myListView.getSelectedItemPosition());
  super.onSaveInstanceState(outState);
 }

 @Override
 public void onRestoreInstanceState(Bundle savedInstanceState) {
  int pos = -1;

  if (savedInstanceState !=null)
   if (savedInstanceState.containsKey(SELECTED_INDEX_KEY))
    pos = savedInstanceState.getInt(SELECTED_INDEX_KEY, -1);
  myListView.setSelection(pos);
 }


    /** Called when the activity is first created. */

 ToDoDBAdapter  toDoDBAdapter;
 FocusDBAdapter  focusDBAdapter;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        myListView = (ListView)findViewById(R.id.myListView);
        myEditText = (EditText)findViewById(R.id.myEditText);

        todoItems = new ArrayList<ToDoItem>();
        int resID = R.layout.todolist_item;
        aa = new ToDoItemAdapter(this, resID, todoItems);
        myListView.setAdapter(aa);

        myEditText.setOnKeyListener(new OnKeyListener()  {
         public boolean onKey(View v, int keyCode, KeyEvent event)  {
         if (event.getAction() == KeyEvent.ACTION_DOWN)  {
         if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER)
         { ToDoItem newItem;
          newItem = new ToDoItem(myEditText.getText().toString());
          if (mission)  { toDoDBAdapter.insertTask(newItem);
          updateArray();            }
          if (focus)  { focusDBAdapter.insertTask(newItem);
          updateFocusArray();            }

          myEditText.setText("");
          aa.notifyDataSetChanged();
          cancelAdd();

          return true;    }


         }

        return false;

        }

        });

        registerForContextMenu(myListView);
  //      restoreUIState();
        toDoDBAdapter = new ToDoDBAdapter(this);
        toDoDBAdapter.open();
        focusDBAdapter = new FocusDBAdapter(this);
        focusDBAdapter.open();
        if (mission) { populateTodoList(); }
        if (focus) { populateFocusList(); }
    //    setContentView(R.layout.main);
        findViewById(R.id.myListView).setSelected(true);
           setContentView(R.layout.title_page);
         }



    Cursor toDoListCursor;

    private void populateTodoList() {
    toDoListCursor = toDoDBAdapter.getAllToDoItemsCursor();
    startManagingCursor(toDoListCursor);
    updateArray();

    }

    private void updateArray() {
     toDoListCursor.requery();

     todoItems.clear();

     if (toDoListCursor.moveToFirst())
      do {
       String task =
         toDoListCursor.getString(ToDoDBAdapter.TASK_COLUMN);

       long created = 
toDoListCursor.getLong(ToDoDBAdapter.CREATION_DATE_COLUMN);
       long mmc2index = toDoListCursor.getLong(ToDoDBAdapter.KEY_ID_COLUMN);

       ToDoItem newItem = new ToDoItem(task, new Date(created), mmc2index );
       todoItems.add(0, newItem);
      } while(toDoListCursor.moveToNext());

     aa.notifyDataSetChanged();

    }

  Cursor focusCursor;

    private void populateFocusList() {
    focusCursor = focusDBAdapter.getAllFocusItemsCursor();

    startManagingCursor(focusCursor);
    updateFocusArray();

    }

    private void updateFocusArray() {
     focusCursor.requery();

     todoItems.clear();

     if (focusCursor.moveToFirst())
      do {
       String task =
         focusCursor.getString(FocusDBAdapter.TASK_COLUMN);

       long created = 
focusCursor.getLong(FocusDBAdapter.CREATION_DATE_COLUMN);
       long mmc2index = focusCursor.getLong(FocusDBAdapter.KEY_ID_COLUMN);

       ToDoItem newItem = new ToDoItem(task, new Date(created), mmc2index );
       todoItems.add(0, newItem);
      } while(focusCursor.moveToNext());

     aa.notifyDataSetChanged();
     focusCursor.moveToFirst();
     myListView.setSelected(true);
     findViewById(R.id.myListView).setSelection(0);
    }

        @Override
    public boolean onCreateOptionsMenu (Menu menu) {
     super.onCreateOptionsMenu(menu);

     MenuItem Reports = menu.add(0, REPORTS, Menu.NONE, R.string.reports);
     MenuItem Mission = menu.add(0, MISSION, Menu.NONE, R.string.mission);
     MenuItem Cash_Count = menu.add(0, CASH_COUNT, Menu.NONE, 
R.string.cash_count);
     MenuItem Focus = menu.add(0, FOCUS, Menu.NONE, R.string.focus);
     MenuItem Input = menu.add(0, INPUT, Menu.NONE, R.string.input);
     MenuItem Setup = menu.add(0, SETUP, Menu.NONE, R.string.setup);
     MenuItem Back_To_Start = menu.add(0, BACK_TO_START, Menu.NONE, 
R.string.back_to_start);
     MenuItem Add_New_Todo = menu.add(0, ADD_NEW_TODO, Menu.NONE, 
R.string.add_new);
     MenuItem Remove_Todo = menu.add(0, REMOVE_TODO, Menu.NONE, 
R.string.remove);
    // SubMenu subSetup = menu.addSubMenu(0,SETUP ,Menu.NONE, 
R.string.setup);
    // MenuItem submenuItem = subSetup.add(0, subSetupTitle, Menu.NONE, 
"TITLE SCREEN");
    // MenuItem submenuitem = subSetup.add(0, subSetupSetup, Menu.NONE, 
"SETUP");
    // itemAdd.setIcon(R.drawable.add_new_item);
    //  itemRem.setIcon(R.drawable.remove_item);
        MenuItem Output = menu.add(0, OUTPUT, Menu.NONE, R.string.output );

     return true;
    }



    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, 
ContextMenu.ContextMenuInfo menuInfo)
    { super.onCreateContextMenu(menu, v, menuInfo);
     menu.setHeaderTitle("Selected To Do Item");
    }//    menu.add(0, REMOVE_TODO, Menu.NONE, R.string.remove);  }



    private boolean addingNew = false;

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
     super.onPrepareOptionsMenu(menu);

     int idx = myListView.getSelectedItemPosition();

//     String removeTitle = getString(addingNew ? R.string.cancel : 
R.string.remove);
//     MenuItem removeItem = menu.findItem(REMOVE_TODO);
//     removeItem.setTitle(removeTitle);
//     removeItem.setVisible(addingNew || idx > -1);

     if (reports)  {  MenuItem Reports = menu.findItem(REPORTS);
   Reports.setTitle(R.string.title_screen);  }
     else  {  MenuItem Reports = menu.findItem(REPORTS);
   Reports.setTitle(R.string.reports);    }



     if (input)  {  MenuItem Input = menu.findItem(INPUT);
   Input.setTitle(R.string.title_screen);  }
     else  {  MenuItem Input = menu.findItem(INPUT);
   Input.setTitle(R.string.input);    }

     if (cash_count)  {  MenuItem Cash_count = menu.findItem(CASH_COUNT);
          Cash_count.setTitle(R.string.title_screen);  }
     else  {  MenuItem Cash_count = menu.findItem(CASH_COUNT);
          Cash_count.setTitle(R.string.cash_count);    }

     if (setup)  {  MenuItem Setup = menu.findItem(SETUP);
   Setup.setTitle(R.string.title_screen);  }
     else  {  MenuItem Setup = menu.findItem(SETUP);
   Setup.setTitle(R.string.setup);    }

     if (output)  {  MenuItem Output = menu.findItem(OUTPUT);
   Output.setTitle(R.string.title_screen);  }
     else  {  MenuItem Output = menu.findItem(OUTPUT);
   Output.setTitle(R.string.output);    }
     restoreMenu(menu);
     if (mission)  {  clearMenu(menu);    }
     if (focus)  {  clearMenu(menu);    }
     return true;
    }

    public void clearMenu(Menu menu)  {
     MenuItem Reports = menu.findItem(REPORTS);
     Reports.setVisible(false);
     MenuItem Mission = menu.findItem(MISSION);
     Mission.setVisible(false);
     MenuItem Cash_count = menu.findItem(CASH_COUNT);
     Cash_count.setVisible(false);
     MenuItem Focus = menu.findItem(FOCUS);
     Focus.setVisible(false);
     MenuItem Input = menu.findItem(INPUT);
     Input.setVisible(false);
     MenuItem Setup = menu.findItem(SETUP);
     Setup.setVisible(false);
     MenuItem Output = menu.findItem(OUTPUT);
     Output.setVisible(false);
     MenuItem Add_New_Todo = menu.findItem(ADD_NEW_TODO);
     Add_New_Todo.setVisible(true);
     MenuItem Remove_Todo = menu.findItem(REMOVE_TODO);
     Remove_Todo.setVisible(true);
     MenuItem Back_To_Start = menu.findItem(BACK_TO_START);
     Back_To_Start.setVisible(true);
    }

    public void restoreMenu(Menu menu)  {
     MenuItem Reports = menu.findItem(REPORTS);
     Reports.setVisible(true);
     MenuItem Mission = menu.findItem(MISSION);
     Mission.setVisible(true);
     MenuItem Cash_count = menu.findItem(CASH_COUNT);
     Cash_count.setVisible(true);
     MenuItem Focus = menu.findItem(FOCUS);
     Focus.setVisible(true);
     MenuItem Input = menu.findItem(INPUT);
     Input.setVisible(true);
     MenuItem Setup = menu.findItem(SETUP);
     Setup.setVisible(true);
     MenuItem Output = menu.findItem(OUTPUT);
     Output.setVisible(true);
     MenuItem Add_New_Todo = menu.findItem(ADD_NEW_TODO);
     Add_New_Todo.setVisible(false);
     MenuItem Remove_Todo = menu.findItem(REMOVE_TODO);
     Remove_Todo.setVisible(false);
     MenuItem Back_To_Start = menu.findItem(BACK_TO_START);
     Back_To_Start.setVisible(false);
    }

    boolean reports = false;
    boolean mission = false;
    boolean input = false;
    boolean cash_count = false;
    boolean setup = false;
    boolean output = false;
    boolean focus = false;
    boolean back_to_start = false;

   @Override
   public boolean onOptionsItemSelected(final MenuItem item)  {
    super.onOptionsItemSelected(item);

    //int index = myListView.getSelectedItemPosition();

    switch(item.getItemId())  {
    case(REMOVE_TODO): {
     if (addingNew) {   cancelAdd();    }
     else {

      new AlertDialog.Builder(this)
        .setTitle("Remove Entry")
        .setMessage("Are you sure ?")
        .setPositiveButton("Remove", new DialogInterface.OnClickListener() 
{
         public void onClick(DialogInterface dlg, int sumthin) {
          if(mission) {
          toDoListCursor.moveToPosition(todoItems.size() -
            (myListView.getSelectedItemPosition()+1));  }
          if(focus) {
           focusCursor.moveToPosition(todoItems.size() -
             (myListView.getSelectedItemPosition()+1));  }
          int  index =  item.getItemId();
          removeItem(index);
         }
            })
         .setNegativeButton("Go Back", new DialogInterface.OnClickListener() 
{
         public void onClick(DialogInterface dlg, int sumthin) {  }
         })

      .show();




            }

     return true;             }

    case(ADD_NEW_TODO): {

     addNewItem();

     return true;
            }

    case(REPORTS): {
     if (reports) {
      setContentView(R.layout.title_page);
      reports = false;       }
        else{  setContentView(R.layout.reports);
            reports = true; mission = false; input = false;
            cash_count = false; setup = false; output = false;   }
      return true;
     }


    case(MISSION): {
     setContentView(R.layout.main);
     TextView tv =  (TextView) 
this.findViewById(R.id.mission_focus_heading);
     tv.setText("    BUSINESS  MISSION  STATEMENT");
     focus = false;
     mission = true;

     {   myListView = (ListView)findViewById(R.id.myListView);
          myEditText = (EditText)findViewById(R.id.myEditText);

          todoItems = new ArrayList<ToDoItem>();
          int resID = R.layout.todolist_item;
          aa = new ToDoItemAdapter(this, resID, todoItems);
          myListView.setAdapter(aa);

          myEditText.setOnKeyListener(new OnKeyListener()  {
           public boolean onKey(View v, int keyCode, KeyEvent event)  {
           if (event.getAction() == KeyEvent.ACTION_DOWN)
           if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER)
           { ToDoItem newItem;
            newItem = new ToDoItem(myEditText.getText().toString());
            toDoDBAdapter.insertTask(newItem);
            updateArray();
            myEditText.setText("");
            aa.notifyDataSetChanged();
            cancelAdd();

            return true;    }
          return false;

          }

          });

                 registerForContextMenu(myListView);
       //   restoreUIState();
          toDoDBAdapter = new ToDoDBAdapter(this);
          toDoDBAdapter.open();
          populateTodoList();
      //    setContentView(R.layout.main);
      //       setContentView(R.layout.title_page);
           }






     return true;
     }

    case(FOCUS): {
     setContentView(R.layout.main);
     TextView tv =  (TextView) 
this.findViewById(R.id.mission_focus_heading);
     tv.setText("    CURRENT  MANAGEMENT  FOCUS");

     focus = true;
     mission = false;
     {   myListView = (ListView)findViewById(R.id.myListView);
          myEditText = (EditText)findViewById(R.id.myEditText);

          todoItems = new ArrayList<ToDoItem>();
          int resID = R.layout.todolist_item;
          aa = new ToDoItemAdapter(this, resID, todoItems);
          myListView.setAdapter(aa);

          myEditText.setOnKeyListener(new OnKeyListener()  {
           public boolean onKey(View v, int keyCode, KeyEvent event)  {
           if (event.getAction() == KeyEvent.ACTION_DOWN)
           if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER)
               { ToDoItem newItem;
            newItem = new ToDoItem(myEditText.getText().toString());
            focusDBAdapter.insertTask(newItem);
            updateFocusArray();
            myEditText.setText("");
            aa.notifyDataSetChanged();
            cancelAdd();

            return true;    }
          return false;

          }

          });

          registerForContextMenu(myListView);
       //   restoreUIState();
          focusDBAdapter = new FocusDBAdapter(this);
          focusDBAdapter.open();
          populateFocusList();
      //    setContentView(R.layout.main);
      //       setContentView(R.layout.title_page);
          focusCursor.moveToFirst();
       myListView.requestFocus();
           }






     return true;
     }

    case(BACK_TO_START): {
     setContentView(R.layout.title_page);
     mission = false;
     focus = false;

     return true;
     }

    case(INPUT): {
     if (input) {
      setContentView(R.layout.title_page);
      input = false;       }
        else{  setContentView(R.layout.input);
           reports = false; mission = false; input = true;
           cash_count = false; setup = false; output = false;    }
      return true;
     }

    case(CASH_COUNT): {
     if (mission) {
      setContentView(R.layout.title_page);
     cash_count = false;     }
        else{  setContentView(R.layout.cash_count);
           reports = false; mission = false; input = false;
           cash_count = true; setup = false; output = false;    }
      return true;
     }



    case(SETUP): {
    if (setup) {
     setContentView(R.layout.title_page);
     setup = false;       }
       else{  setContentView(R.layout.setup);
          reports = false; mission = false; input = false;
          cash_count = false; setup = true; output = false;     }
     return true;
    }

    case(OUTPUT): {
     if (output) {
      setContentView(R.layout.title_page);
      output = false;       }
        else{  setContentView(R.layout.output);
           reports = false; mission = false; input = false;
           cash_count = false; setup = false; output = true;    }
      return true;
     }

 //   case(subSetupTitle):  {
 //    setContentView(R.layout.title_page);
 //    return true;
 //   }

 //   case(subSetupSetup):  {
 //    setContentView(R.layout.setup);
 //    return true;
 //   }
     }
      return false;
   }

   @Override
   public boolean onKeyDown (int keyCode, KeyEvent event)  {
    super.onKeyDown(keyCode, event);
    if (keyCode == KeyEvent.KEYCODE_MENU) {
     myEditText.setVisibility(View.GONE);
     myEditText.setText("");
     if (mission) {
     TextView tv =  (TextView)findViewById(R.id.main_prompt_mission);
     tv.setVisibility(View.GONE);;               }
     if (focus)  {
     TextView tv1 =  (TextView)findViewById(R.id.main_prompt_focus );
     tv1.setVisibility(View.GONE);;              }
    }

    return false;
   }

    @Override
    public boolean onContextItemSelected(MenuItem item)  {
     super.onContextItemSelected(item);

//     switch (item.getItemId())  {
//     case (REMOVE_TODO):  {
//      AdapterView.AdapterContextMenuInfo menuInfo;
//      menuInfo = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();

//       toDoListCursor.moveToPosition(todoItems.size() - 
((menuInfo.position)+1));
//       int index =  item.getItemId();
//         removeItem(index);


//      return true;
//     }
//     }
      return false;
    }

    private void cancelAdd() {
     addingNew = false;
     myEditText.setVisibility(View.GONE);
     TextView tv =  (TextView)  this.findViewById(R.id.main_prompt_mission);
  tv.setVisibility(View.GONE);
  TextView tv1 =  (TextView)  this.findViewById(R.id.main_prompt_focus);
  tv1.setVisibility(View.GONE);
 // toDoListCursor.moveToFirst();


    }

    private void addNewItem() {
     addingNew = true;
     myEditText.setVisibility(View.VISIBLE);
     if (mission) {
     TextView tv =  (TextView)  this.findViewById(R.id.main_prompt_mission);
  tv.setVisibility(View.VISIBLE);           }
     if (focus) {
         TextView tv =  (TextView) 
this.findViewById(R.id.main_prompt_focus);
      tv.setVisibility(View.VISIBLE);           }
     myEditText.requestFocus();
    //   toDoListCursor.moveToFirst();

    }

    private long removeItem( int index) {
     if (mission) {
     String task =
    toDoListCursor.getString(ToDoDBAdapter.TASK_COLUMN);
  long created = toDoListCursor.getLong(ToDoDBAdapter.CREATION_DATE_COLUMN);
  long mmc2index = toDoListCursor.getLong(ToDoDBAdapter.KEY_ID_COLUMN);
  ToDoItem TDI = new ToDoItem(task, new Date (created), mmc2index);
  long mmc3index = TDI.getID();
  toDoDBAdapter.removeTask(mmc3index);
  updateArray();
     }

     if (focus) {
         String task =
        focusCursor.getString(FocusDBAdapter.TASK_COLUMN);
      long created = 
focusCursor.getLong(FocusDBAdapter.CREATION_DATE_COLUMN);
      long mmc2index = focusCursor.getLong(FocusDBAdapter.KEY_ID_COLUMN);
      ToDoItem TDI = new ToDoItem(task, new Date (created), mmc2index);
      long mmc3index = TDI.getID();
      focusDBAdapter.removeTask(mmc3index);
      updateFocusArray();
         }

     return index;
    }

}








----- Original Message ----- 
From: "Sean Hodges" <[email protected]>
To: <[email protected]>
Sent: Monday, June 01, 2009 3:20 AM
Subject: [android-beginners] Re: Setting Focus by code in an array list


>
> Hello Mike,
>
> I'm not familiar with the code you are using, but I believe you want
> to use setSelection() inside the "onCreate" method of the activity,
> something like:
>
> findViewById(R.id.myListView).setSelection(0);
>
> See here for more info:
> http://developer.android.com/reference/android/widget/ListView.html#setSelection%28int%29
>
> If you're still struggling, post up the activity code so we can better
> see what it is you are trying to do.
>
>
> Regards,
>
> Sean
>
>
> On Mon, Jun 1, 2009 at 10:19 AM, MMC2 <[email protected]> wrote:
>>
>> I am writing an app that is partly based on the ToDo Item example in
>> the book "Professional Android Application Development by Reto Meier.
>> I have an array list that lists data stored in a database. What I
>> would like, is to be able to set the focus automatically to the first
>> item by code when the list loads. The way things are at present, if I
>> try to remove an item without manually highlighting it first, I get an
>> error. Help please?
>> >
>>
>
> > 


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Beginners" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to