英単語帳アプリを作っています。
その中でListviewを使ってデータベースに入れている単語の一覧を表示させるActivityを用意したいと考えています。
そして、表示されている単語をクリックすると、その単語の詳細データを表示させるActivityに遷移させるようにしたいのです。
自分で調べて遷移させる方法は分かったのですが、タップした単語と画面遷移後のActivityに表示する詳細データの単語とを同じものにするにはどうすればいいのかが分かりません。
単語を示す変数を受け渡しすればいいと思っているのですが、for文でListを作っているため、どこにputExtraを用意すべきかが分かっていません。アドバイスお願いします、、、
java
1public class ListActivity extends AppCompatActivity { 2 /*ListViewでデータベースの単語一覧を表示*/ 3 4 private SQLiteDatabase databaseObject; 5 private DataBaseHelper dbhelper = null; 6 7 @Override 8 protected void onCreate(Bundle savedInstanceState) { 9 super.onCreate(savedInstanceState); 10 setContentView(R.layout.activity_list); 11 12 final ListView mListView = (ListView) findViewById(R.id.word_list); 13 14 dbhelper = new DataBaseHelper(this); 15 databaseObject = dbhelper.getReadableDatabase(); 16 17 ArrayList<String> data = new ArrayList<String>(); 18 String query = "SELECT * " + "FROM WordData"; 19 20 Cursor cursor = databaseObject.rawQuery(query, null); 21 cursor.moveToFirst(); 22 for (int i = 0; i < cursor.getCount(); i++) { 23 24 data.add(cursor.getString(0)); 25 cursor.moveToNext(); 26 } 27 28 cursor.close(); 29 databaseObject.close(); 30 31 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data); 32 mListView.setAdapter(adapter); 33 34 35 //タップした単語の詳細を表示するActivityに画面遷移 36 mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 37 @Override 38 public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 39 ListView listView = (ListView)parent; 40 String item = (String)listView.getItemAtPosition(position); 41 42 //ここで値を渡す?? 43 Intent intent = new Intent(getApplicationContext(), WordActivity.class); 44 intent.putExtra("word", item); /*処理は合ってる??*/ 45 startActivity(intent); 46 } 47 }); 48}
java
1public class WordActivity extends AppCompatActivity { 2 /*ListViewのitemをタップして詳細データを表示*/ 3 private DataBaseHelper dbhelper; 4 5 @Override 6 protected void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.activity_word); 9 10 dbhelper = new DataBaseHelper(this); 11 12 SQLiteDatabase databaseObject = dbhelper.getReadableDatabase(); 13 14 /*ここで値を受け取る??*/ 15 Intent intent = getIntent(); 16 String item = intent.getStringExtra("word"); 17 18 String query = "SELECT * " + "FROM WordData"; 19 Log.d("query", "query = " + query); 20 21 Cursor cursor = databaseObject.rawQuery(query, null); 22 23 String word = cursor.getString(0); 24 String pron1 =cursor.getString(1); 25 String pron2 = cursor.getString(2); 26 String mean1 = cursor.getString(3); 27 String mean2 = cursor.getString(4); 28 String des = cursor.getString(5); 29 String part = cursor.getString(6); 30 31 TextView wordView = (TextView)findViewById(R.id.word_view); 32 wordView.setText(word); 33 34 TextView pronView =(TextView) findViewById(R.id.pron_view); 35 pronView.setText("【" + pron1 + pron2 + "】"); 36 37 TextView partView =(TextView) findViewById(R.id.part_view); 38 partView.setText(part); 39 40 TextView mean1View =(TextView)findViewById(R.id.mean1_view); 41 mean1View.setText("①" + mean1); 42 43 TextView mean2View =(TextView) findViewById(R.id.mean2_view); 44 mean2View.setText("②" + mean2); 45 46 TextView desView = (TextView) findViewById(R.id.des_view); 47 desView.setText("※" + des); 48 49 } 50}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/17 06:39
2016/10/17 06:45 編集
2016/10/17 07:00
2016/10/17 07:04
2016/10/17 07:09
2016/10/17 07:11
2016/10/17 07:14
2016/10/17 07:35
2016/10/17 07:43