質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

受付中

カスタムリストビューのクリックした項目の情報を取得する方法

seiya1311
seiya1311

総合スコア27

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

3回答

0評価

4クリップ

6329閲覧

投稿2014/09/21 13:08

###ToDoアプリを作成するためのリストビューの表示です。

たびたびすみません。ソースも修正しました。

職業訓練で卒業制作をかねて、趣味のコミケのチェックリストを作成しています。
ここでは、コミケの持ち物をチェックするリストなのでToDoリストのようなイメージです。

リストを表示して、リストのアイテムをクリックすると
コンテキストメニューを出して編集するか削除したいと考えています。

データベースに格納しているので、
リストビューのPOSITION->データベースのID->そのカラムを取得できれば
やりたいことを満たせると思っていますが、取得できていません。

onTouchItemEventなどで取得しようとしましたが、うまく取得できませんでした。
継承するファイルをListActivityにして
また、コンテキストメニューでデータを取得しようとしてもうまくいきません。

カスタムリストビューの構成は
チェックボックスとテキストビューです。
このデータをSQLLiteに
id、チェックしたかのデータ(boolean)、アイテム(テキスト)
で格納しています。

何かいい取得する方法があれば教えてください。
お願いいたします。

###遷移イメージ
![イメージ説明]WIDTH:320
![イメージ説明]WIDTH:320

###ファイルの構成
上記の処理は別ファイルにしています。

  • カスタムリストビューとリストビュー高速化
  • DBへ接続する書き込みする

lang

package com.example.comikechecklist; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Button; import android.widget.ListView; import com.example.comikecheckdb.DBConnection; import com.example.comikecheckdb.DataBaseAdapter; import com.example.comikecheckparts.CustomAdapter; import com.example.comikecheckparts.CustomItem; public class ItemListActivity extends Activity { // フィールド private DataBaseAdapter helper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_item_list); // データベース接続処理、アイテム表示 helper = new DataBaseAdapter(this); DBConnection dao = new DBConnection(helper); dao.open(DBConnection.DB_MODE_READ); Cursor c = DBConnection.findAllCursor(); dao.close(); // リスト表示 List<CustomItem> list = new ArrayList<CustomItem>(); do { list.add(new CustomItem(c.getInt(1), c.getString(2))); } while(c.moveToNext()); ListView listView = (ListView)findViewById(R.id.list); listView.setAdapter(new CustomAdapter(this, list)); Button button = (Button)findViewById(R.id.button_item_add); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(ItemListActivity.this, EditItemActivity.class); startActivity(intent); } }); // CheckBox checkBox = (CheckBox)findViewById(R.id.check); //コンテキストメニュー表示するための登録 registerForContextMenu(listView); } @Override protected void onRestart() { super.onRestart(); reloadCursor(); } private void reloadCursor() { // データベース接続処理、アイテム表示 helper = new DataBaseAdapter(this); DBConnection dao = new DBConnection(helper); dao.open(DBConnection.DB_MODE_READ); Cursor c = DBConnection.findAllCursor(); dao.close(); List<CustomItem> list = new ArrayList<CustomItem>(); do { list.add(new CustomItem(c.getInt(1), c.getString(2))); } while(c.moveToNext()); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); getMenuInflater().inflate(R.menu.item_context_menu, menu); } @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { //編集処理 case R.id.context_menu1: ListView listView = (ListView)findViewById(R.id.list); listView.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View v, int position, long id) { ListView listView = (ListView) parent; CustomItem custom = (CustomItem) listView.getItemAtPosition(position); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); Intent intent = new Intent(ItemListActivity.this, EditItemActivity.class); // intent.putExtra("item", custom.toString()); // intent.putExtra("id", id); startActivity(intent); return true; //削除処理 case R.id.context_menu2: return true; default: return super.onContextItemSelected(item); } } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.item_list, menu); return true; } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。