###ToDoアプリを作成するためのリストビューの表示です。
たびたびすみません。ソースも修正しました。
職業訓練で卒業制作をかねて、趣味のコミケのチェックリストを作成しています。
ここでは、コミケの持ち物をチェックするリストなのでToDoリストのようなイメージです。
リストを表示して、リストのアイテムをクリックすると
コンテキストメニューを出して編集するか削除したいと考えています。
データベースに格納しているので、
リストビューのPOSITION->データベースのID->そのカラムを取得できれば
やりたいことを満たせると思っていますが、取得できていません。
onTouchItemEventなどで取得しようとしましたが、うまく取得できませんでした。
継承するファイルをListActivityにして
また、コンテキストメニューでデータを取得しようとしてもうまくいきません。
カスタムリストビューの構成は
チェックボックスとテキストビューです。
このデータをSQLLiteに
id、チェックしたかのデータ(boolean)、アイテム(テキスト)
で格納しています。
何かいい取得する方法があれば教えてください。
お願いいたします。
###遷移イメージ
![イメージ説明]WIDTH:320
![イメージ説明]WIDTH:320
###ファイルの構成
上記の処理は別ファイルにしています。
- カスタムリストビューとリストビュー高速化
- DBへ接続する書き込みする
lang
1package com.example.comikechecklist; 2 3import java.util.ArrayList; 4import java.util.List; 5 6import android.app.Activity; 7import android.content.Intent; 8import android.database.Cursor; 9import android.os.Bundle; 10import android.view.ContextMenu; 11import android.view.ContextMenu.ContextMenuInfo; 12import android.view.Menu; 13import android.view.MenuItem; 14import android.view.View; 15import android.view.View.OnClickListener; 16import android.widget.AdapterView; 17import android.widget.AdapterView.OnItemSelectedListener; 18import android.widget.Button; 19import android.widget.ListView; 20 21import com.example.comikecheckdb.DBConnection; 22import com.example.comikecheckdb.DataBaseAdapter; 23import com.example.comikecheckparts.CustomAdapter; 24import com.example.comikecheckparts.CustomItem; 25 26public class ItemListActivity extends Activity { 27 28 // フィールド 29 private DataBaseAdapter helper; 30 31 @Override 32 protected void onCreate(Bundle savedInstanceState) { 33 super.onCreate(savedInstanceState); 34 setContentView(R.layout.activity_item_list); 35 36 // データベース接続処理、アイテム表示 37 helper = new DataBaseAdapter(this); 38 DBConnection dao = new DBConnection(helper); 39 dao.open(DBConnection.DB_MODE_READ); 40 Cursor c = DBConnection.findAllCursor(); 41 dao.close(); 42 43 // リスト表示 44 List<CustomItem> list = new ArrayList<CustomItem>(); 45 do { 46 list.add(new CustomItem(c.getInt(1), c.getString(2))); 47 } while(c.moveToNext()); 48 49 ListView listView = (ListView)findViewById(R.id.list); 50 listView.setAdapter(new CustomAdapter(this, list)); 51 52 Button button = (Button)findViewById(R.id.button_item_add); 53 button.setOnClickListener(new OnClickListener() { 54 55 @Override 56 public void onClick(View v) { 57 Intent intent = new Intent(ItemListActivity.this, EditItemActivity.class); 58 startActivity(intent); 59 } 60 }); 61 62// CheckBox checkBox = (CheckBox)findViewById(R.id.check); 63 64 //コンテキストメニュー表示するための登録 65 registerForContextMenu(listView); 66 67 } 68 69 @Override 70 protected void onRestart() { 71 super.onRestart(); 72 reloadCursor(); 73 } 74 75 private void reloadCursor() { 76 // データベース接続処理、アイテム表示 77 helper = new DataBaseAdapter(this); 78 DBConnection dao = new DBConnection(helper); 79 dao.open(DBConnection.DB_MODE_READ); 80 Cursor c = DBConnection.findAllCursor(); 81 dao.close(); 82 83 List<CustomItem> list = new ArrayList<CustomItem>(); 84 do { 85 list.add(new CustomItem(c.getInt(1), c.getString(2))); 86 } while(c.moveToNext()); 87 88 } 89 90 @Override 91 public void onCreateContextMenu(ContextMenu menu, View v, 92 ContextMenuInfo menuInfo) { 93 super.onCreateContextMenu(menu, v, menuInfo); 94 getMenuInflater().inflate(R.menu.item_context_menu, menu); 95 } 96 97 @Override 98 public boolean onContextItemSelected(MenuItem item) { 99 switch (item.getItemId()) { 100 //編集処理 101 case R.id.context_menu1: 102 ListView listView = (ListView)findViewById(R.id.list); 103 listView.setOnItemSelectedListener(new OnItemSelectedListener() { 104 105 @Override 106 public void onItemSelected(AdapterView<?> parent, View v, 107 int position, long id) { 108 ListView listView = (ListView) parent; 109 CustomItem custom = (CustomItem) listView.getItemAtPosition(position); 110 } 111 112 @Override 113 public void onNothingSelected(AdapterView<?> parent) { 114 115 } 116 }); 117 Intent intent = new Intent(ItemListActivity.this, EditItemActivity.class); 118// intent.putExtra("item", custom.toString()); 119// intent.putExtra("id", id); 120 startActivity(intent); 121 122 return true; 123 //削除処理 124 case R.id.context_menu2: 125 return true; 126 default: 127 return super.onContextItemSelected(item); 128 } 129 130 } 131 132 @Override 133 protected void onSaveInstanceState(Bundle outState) { 134 super.onSaveInstanceState(outState); 135 } 136 137 @Override 138 protected void onRestoreInstanceState(Bundle savedInstanceState) { 139 super.onRestoreInstanceState(savedInstanceState); 140 } 141 142 143 @Override 144 public boolean onCreateOptionsMenu(Menu menu) { 145 // Inflate the menu; this adds items to the action bar if it is present. 146 getMenuInflater().inflate(R.menu.item_list, menu); 147 return true; 148 } 149 150 @Override 151 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 152 super.onActivityResult(requestCode, resultCode, data); 153 154 } 155 156 @Override 157 public boolean onOptionsItemSelected(MenuItem item) { 158 // Handle action bar item clicks here. The action bar will 159 // automatically handle clicks on the Home/Up button, so long 160 // as you specify a parent activity in AndroidManifest.xml. 161 int id = item.getItemId(); 162 if (id == R.id.action_settings) { 163 return true; 164 } 165 return super.onOptionsItemSelected(item); 166 } 167 168}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2014/09/26 00:00
2014/09/26 15:47
2014/09/28 20:27
2014/11/17 04:11