diff --git a/src/com/timsu/astrid/activities/TaskListAdapter.java b/src/com/timsu/astrid/activities/TaskListAdapter.java index d65245d75..49d8e9b13 100644 --- a/src/com/timsu/astrid/activities/TaskListAdapter.java +++ b/src/com/timsu/astrid/activities/TaskListAdapter.java @@ -150,24 +150,32 @@ public class TaskListAdapter extends ArrayAdapter { alarmController = new AlertController(activity); } - /** Toggle the expanded state of this task */ - public void toggleExpanded(View view, TaskModelForList task) { + /** Sets the expanded state as desired */ + public void setExpanded(View view, TaskModelForList task, boolean state) { try { - if(CACHE_TRUE.equals(task.getCachedLabel(KEY_EXPANDED))) { - task.putCachedLabel(KEY_EXPANDED, null); - hooks.setSelectedItem(null); - } else { + if(state) { task.putCachedLabel(KEY_EXPANDED, CACHE_TRUE); hooks.setSelectedItem(task.getTaskIdentifier()); + } else { + task.putCachedLabel(KEY_EXPANDED, null); + hooks.setSelectedItem(null); } - if(view != null) { + if(view != null && state == true) { setFieldContentsAndVisibility(view, task); ((ListView)view.getParent()).setSelection(objects.indexOf(task)); } } catch (Exception e) { - // sometimes our view dies? or other weird stuff happens. - Log.e("astrid", "Error in toggleExpanded", e); + Log.e("astrid", "Error in setExpanded", e); + } + } + + /** Toggle the expanded state of this task */ + public void toggleExpanded(View view, TaskModelForList task) { + if(CACHE_TRUE.equals(task.getCachedLabel(KEY_EXPANDED))) { + setExpanded(view, task, false); + } else { + setExpanded(view, task, true); } } diff --git a/src/com/timsu/astrid/activities/TaskListSubActivity.java b/src/com/timsu/astrid/activities/TaskListSubActivity.java index 97ec0272b..bd78f4329 100644 --- a/src/com/timsu/astrid/activities/TaskListSubActivity.java +++ b/src/com/timsu/astrid/activities/TaskListSubActivity.java @@ -518,10 +518,10 @@ public class TaskListSubActivity extends SubActivity { @Override public void setSelectedItem(TaskIdentifier taskId) { - selectedTask = null; - if(taskId == null) + if(taskId == null) { selectedTaskId = null; - else + selectedTask = null; + } else selectedTaskId = taskId.getId(); } }); @@ -532,7 +532,7 @@ public class TaskListSubActivity extends SubActivity { try { int selectedPosition = tasks.getPosition(selectedTask); View v = listView.getChildAt(selectedPosition); - tasks.toggleExpanded(v, selectedTask); + tasks.setExpanded(v, selectedTask, true); listView.setSelection(selectedPosition); } catch (Exception e) { Log.e("astrid", "error with selected task", e);