Sean,

        Thanks for your reply and for being prepared to look further at my 
problem. I tried your suggestion but it didn't work. It raises an error that 
says " The method setSelection(int) is undefined for the type View ". It 
suggested changing it to setSelected but that is not working either. What I 
want to happen is that at the beginning, and after new entries are added or 
entries removed, the first entry is highlighted similar to if I used the up 
and down keys on the d pad to highlight the required entry. Not only is the 
entry not being highlighted, but after additions or removals the pointer is 
still pointing to where it was despite my  " focusCursor.moveToFirst();" 
This means that say for instance you manually move down to the third item, 
and then remove an item, when you come back to the list, nothing is 
highlighted, but when you press the down button once, the third item becomes 
highlighted.

        I have marked the on create method and also the update focus array 
method which is where I would like to be able to sit the code. I have got 
arrows pointing to where I have tinkered with each of these methods. By the 
way the word "focus" in my method has nothing to do with the meaning of 
focus in this instance.


Regards

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. */ON   CREATE 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(){UPDATE  FOCUS  ARRAY     
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");    // itemAd!
 d.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 tru!
 e;    }    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);     
Menu!
 Item 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(i!
 tem);    //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);          myEd
itText = (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 =  (T!
 extView)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.setVisibil
ity(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 AMSubject: 
[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 i
s 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