// 名前の無いリストアイテムを上に詰めるメソッド private void sortTopAlignment() { for (int i = 0; i < 10; i++) { // 名前が入っていないアイテムを上から探して if (adapter.getList().get(i).getTask().length() == 0) { for (int j = i; j < 10; j++) { // 名前が入っているアイテムを見つけて名前の無いアイテムに代入して if (1 <= adapter.getList().get(j).getTask().length()) { adapter.getList().get(i).setTask(adapter.getList().get(j).getTask()); adapter.getList().get(i).setTotalTime(adapter.getList().get(j).getTotalTime()); adapter.getList().get(i).setCount(adapter.getList().get(j).getCount()); adapter.getList().get(i).setDate(adapter.getList().get(j).getDate()); // 代入元は初期化 adapter.getList().get(j).setTask(""); adapter.getList().get(j).setTotalTime(0); adapter.getList().get(j).setCount(0); adapter.getList().get(j).setDate(""); break; } } } } saveList2Preferences(); adapter = new TaskArrayAdapter(this, setItem()); listView.setAdapter(adapter); }
// リストの全アイテムをプリファレンスに保存 private void saveList2Preferences() { for (int i = 0; i < 10; i++) { SharedPreferences pref = getSharedPreferences("task" + i, MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.putString("task", adapter.getList().get(i).getTask()); editor.putLong("totalTime", adapter.getList().get(i).getTotalTime()); editor.putInt("count", adapter.getList().get(i).getCount()); editor.putInt("number", i); editor.putString("date", adapter.getList().get(i).getDate()); editor.commit(); } }
@Override protected void onCreate(Bundle savedInstanceState) { // TODO 自動生成されたメソッド・スタブ super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); // コンポーネントの関連付け layout = (RelativeLayout) this.findViewById(R.id.main_layout); listView = (ListView) this.findViewById(R.id.listView1); // リストビューのスクロールキャッシュ無効(色がおかしくなるので) listView.setScrollingCacheEnabled(false); // リスナーの設定 listView.setOnItemClickListener(this); // アダプター作成 adapter = new TaskArrayAdapter(this, setItem()); // リストビューに項目データ(アダプタ)をセット listView.setAdapter(adapter); // 何もタスクが無いのなら新規作成のダイアログが開く int i = 0; editText = new EditText(this); editText.setInputType(InputType.TYPE_CLASS_TEXT); for (int j = 0; j < 10; j++) { i += adapter.getList().get(j).getTask().length(); if (j == 9 && i == 0) { showYesDialog( ListActivity.this, "何かタスクを作ってみよう", "あなたがよく行う習慣を登録して時間を計りましょう", editText, this, 1); break; } } }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActionBar ab = getActionBar(); ab.setDisplayUseLogoEnabled(true); ab.setDisplayShowTitleEnabled(false); setContentView(R.layout.activity_main); table = Table.getInstance(this); List<User> users = (List<User>) table.users.select("usr_logged_in='1'"); if (users.isEmpty()) { Intent intent = new Intent(this, AccountManagement.class); startActivity(intent); } user = users.get(0); tasks = table.tasks.select("task_username='******'"); listView = (ListView) findViewById(R.id.list_view_tasks); taskArrayAdapter = new TaskArrayAdapter(this, R.layout.task, tasks); // listView.setClickable(true); // listView.setItemsCanFocus(true); // listView.setOnItemClickListener(clickOnTask); // listTasks.setOnItemLongClickListener(editOnTask); listView.setAdapter(taskArrayAdapter); taskArrayAdapter.notifyDataSetChanged(); }
// 新規作成ダイアログの作成ボタンクリック時 @Override public void onClick(DialogInterface dialog, int which) { // TODO 自動生成されたメソッド・スタブ switch (dialogNumber) { case 0: case 1: for (int i = 0; i < 10; i++) { // 名前が入っていないアイテムを上から探して追加する if (adapter.getList().get(i).getTask().length() == 0) { // 何もタスクが無いとき、名前を入力せずに作成ボタンを押すと勝手に名前をつける if (dialogNumber == 1 && editText.getText().toString().length() == 0) { editText.setText("新しいタスク"); } adapter.getList().get(i).setTask(editText.getText().toString()); String justTime = justNow(); adapter.getList().get(i).setDate(justTime); // 追加した時点でタスク名をプリファレンスに追加する SharedPreferences pref = getSharedPreferences("task" + i, MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.putString("task", editText.getText().toString()); editor.putInt("number", i); editor.putString("date", justTime); editor.commit(); break; } } adapter = new TaskArrayAdapter(this, setItem()); listView.setAdapter(adapter); break; case 2: if (which == 0) { sortTopAlignment(); } else if (which == 1) { sortCountOrder(); } else if (which == 2) { sortTimeOrder(); } break; default: break; } }
@Override public boolean onOptionsItemSelected(MenuItem item) { // TODO 自動生成されたメソッド・スタブ switch (item.getItemId()) { // 新規作成 case R.id.item_edit: editText = new EditText(this); editText.setInputType(InputType.TYPE_CLASS_TEXT); for (int i = 0; i < 10; i++) { // 開いてるリストアイテムがあるかチェック if (adapter.getList().get(i).getTask().length() == 0) { showYesDialog(ListActivity.this, "新規作成", "新しいタスク名を入力してください", editText, this, 0); break; } else if (adapter.getList().get(i).getTask().length() != 0 && i == 9) { showDialog(this, "タスクは10個までしか登録できないよ", "使わないタスクを削除してね"); break; } } break; case R.id.item_credit: // 明示的なインテントの生成 Intent intent = new Intent(this, net.xypenguin.everydaytask.CreditActivity.class); // アクティビティの呼び出し startActivity(intent); break; case R.id.item_main: setResult(Activity.RESULT_CANCELED); finish(); break; case R.id.item_sort: showListDialog(this, "並べ替えの方法", this, 2); break; default: break; } return super.onOptionsItemSelected(item); }
// リストアイテムを累計時間が多い順に並べる private void sortTimeOrder() { sortTopAlignment(); for (int i = 0; i < 10; i++) { for (int j = i + 1; j < 10; j++) { // 前から累計時間を確認して順番が後ろの値の方が大きいなら if (adapter.getList().get(i).getTotalTime() < adapter.getList().get(j).getTotalTime()) { // 一旦、保持する変数 String task = adapter.getList().get(i).getTask(); long totalTime = adapter.getList().get(i).getTotalTime(); int count = adapter.getList().get(i).getCount(); String date = adapter.getList().get(i).getDate(); // 順番が後の値を前に移す adapter.getList().get(i).setTask(adapter.getList().get(j).getTask()); adapter.getList().get(i).setTotalTime(adapter.getList().get(j).getTotalTime()); adapter.getList().get(i).setCount(adapter.getList().get(j).getCount()); adapter.getList().get(i).setDate(adapter.getList().get(j).getDate()); // 一旦、保持していた値を後ろに移す adapter.getList().get(j).setTask(task); adapter.getList().get(j).setTotalTime(totalTime); adapter.getList().get(j).setCount(count); adapter.getList().get(j).setDate(date); } } } saveList2Preferences(); adapter = new TaskArrayAdapter(this, setItem()); listView.setAdapter(adapter); }