listViewとDBを使って、英単語の一覧を表示させるものを作っています。
その中で、アイテムをタップするとその単語を詳細データをダイアログで表示させたいと思っています。
ダイアログを表示させるところと、タップしたアイテムをタイトルとして表示させる部分まではできています。
はじめはダイアログにデータを表示させるためのlistをlistviewの分とは別で用意して、そこからタップしたアイテムの情報を引き出せないかと考えたのですが、なかなかうまくいかず。
今のコードのままでは、当然といえば当然なのですがDB上最後の単語の発音記号が出力されてしまいます。
ほかにも新しくsql文を指定して、positionとDBのrowIdが一致するものを取り出す方法も考えてみたのですが、そのままに"SELECT * WordData WHERE ROWID == position"が通用するはずもなくうまくいきませんでした。
データベースとダイアログをうまく使う方法や参考サイトを知っている方がいらっしゃれば教えていただきたいです。
java
1public class ListActivity extends AppCompatActivity { 2 /*ListViewでデータベースの単語一覧を表示*/ 3 4 private SQLiteDatabase databaseObject; 5 private DataBaseHelper dbhelper = null; 6 private String pron1; 7 8 @Override 9 protected void onCreate(Bundle savedInstanceState) { 10 super.onCreate(savedInstanceState); 11 setContentView(R.layout.activity_list); 12 13 final ListView mListView = (ListView) findViewById(R.id.word_list); 14 15 dbhelper = new DataBaseHelper(this); 16 databaseObject = dbhelper.getReadableDatabase(); 17 18 final ArrayList<String> data = new ArrayList<String>(); 19 dlist = new ArrayList<String>(); 20 21 final String query = "SELECT * " + "FROM WordData"; 22 23 final Cursor cursor = databaseObject.rawQuery(query, null); 24 cursor.moveToFirst(); 25 for (int i = 0; i < cursor.getCount(); i++) { 26 data.add(cursor.getString(0)); 27 pron1 = cursor.getString(1); 28 29 cursor.moveToNext(); 30 } 31 32 cursor.close(); 33 databaseObject.close(); 34 35 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data); 36 mListView.setAdapter(adapter); 37 38 mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 39 @Override 40 public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 41 AlertDialog.Builder diag = new AlertDialog.Builder(ListActivity.this); 42 43 // ダイアログの表示内容 44 TextView textview = (TextView)view; 45 diag.setTitle(textview.getText() +"【" + pron1 + "】");/*pron1というのは発音記号を指します*/ 46 diag.setMessage("意味"); /*もちろん「意味」という言葉ではなく、意味を表示させたい*/ 47 48 // ダイアログに表示するボタンの定義 49 DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener(){ 50 public void onClick(DialogInterface dialog, int which) { 51 setResult(RESULT_OK); 52 } 53 }; 54 55 // ダイアログに表示するボタンの設定 56 diag.setPositiveButton("OK",listener); 57 // ダイアログの作成、表示 58 diag.create(); 59 diag.show(); 60 } 61 });
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/11 09:55
2016/11/11 10:00
2016/11/12 07:39