前提
SQLiteのDBで(ID,title,date,time,todo1)の5列のデータがあるテーブルを作りました。
2つのListview(リストA,リストB)を設置し、{作りたいアプリの都合上それぞれ別のデザイン(アダプター)が必要になるためリストを2つ設置しました。}
リストAには、titleとdateの内容を表示
リストBには、timeとtodo1の内容を表示します。
実現したいこと
クリックしたリストAのアイテムとIDが同じものをリストBに表示したいと考えていて、IDの取得の仕方は分かったのですが、その後の、クリックしたリストAのアイテムとIDが同じものをリストBに表示するやり方がわかりません。
リストAのアイテムをクリックしIDを取得
↓
IDが同じものの内容をリストBに表示
該当のソースコード
Java
1package com.example.adaptertest2; 2import android.app.Activity; 3import android.content.DialogInterface; 4import android.content.Intent; 5import android.database.Cursor; 6import android.database.sqlite.SQLiteDatabase; 7import android.os.Bundle; 8import android.view.View; 9import android.widget.AdapterView; 10import android.widget.ListView; 11 12import androidx.appcompat.app.AlertDialog; 13 14import java.util.ArrayList; 15 16public class Tab_01 extends Activity { 17 18 DBHelper_1 DBHelper1; 19 ArrayList<User> userList; 20 ListView listView,listView1; 21 User user; 22 23 SQLiteDatabase db; 24 25 @Override 26 protected void onCreate( 27 Bundle savedInstanceState) { 28 super.onCreate(savedInstanceState); 29 setContentView(R.layout.activity_tab01); 30 } 31 32 public void onaddButtonClick1(View view) { 33 Intent intent = new Intent(getApplication(), add.class); 34 intent.putExtra("ScreenBefore","Tab_01"); 35 startActivity(intent); 36 } 37 38 //チェックボックス押したときの処理 39 public void deleteTask(View view){ 40 41 } 42 43 @Override 44 //他のアクティビティから戻る際にListViewを更新したいためonResumeに記述 45 protected void onResume() { 46 super.onResume(); 47 48 DBHelper1 = new DBHelper_1(this); 49 userList = new ArrayList<>(); 50 Cursor data = DBHelper1.getListContents(); 51 //int numRows = data.getCount(); 52 53 //TODO todoテスト変更2 54 int i=0; 55 while(data.moveToNext()){ 56 user = new User(data.getLong(0),data.getString(1),data.getString(2),data.getString(3),data.getString(4)); 57 userList.add(i,user); 58 System.out.println(data.getString(3)+" "+data.getString(4)); 59 System.out.println(data.getString(1)+" "+data.getString(2)); 60 System.out.println(userList.get(i).getTitleName()); 61 i++; 62 } 63 TwoColumnAdapter adapter = new TwoColumnAdapter(this,R.layout.lv_adapter, userList); 64 ToDoAdapter todoadapter = new ToDoAdapter(this,R.layout.todo_adapter, userList); 65 listView = (ListView) findViewById(R.id.lv1); 66 listView1 = (ListView) findViewById(R.id.lv1_1); 67 listView.setAdapter(adapter); 68 listView1.setAdapter(todoadapter); 69 listView.setOnItemClickListener(new OnItemClickListener()); 70 listView.setOnItemLongClickListener(new OnItemLongClickListener()); 71 72 } 73 //TODO 予定リスト押したら、ToDoリストに予定に対するToDo入る 74 //タブ1のリストを押した場合 75// ToDoAdapter todoadapter = new ToDoAdapter(this,R.layout.todo_adapter, userList); 76 public class OnItemClickListener implements AdapterView.OnItemClickListener { 77 public void onItemClick(AdapterView<?> adapter, View view, int position, long id) { 78 79 ArrayList data1 = new ArrayList<>(); 80 81 Cursor data = DBHelper1.getListContents(); 82 //int numRows = data.getCount(); 83 84 //★IDの取得★ 85 User user = userList.get(userList.size() - 1 - position); 86 long UserId = user.getId(); 87 88 //TODO todoテスト変更2 89 if(UserId == 1) {//アダプターBのIDとクリックしたアイテムのIDが同じだったら... 90 91 int i = 0; 92 while (data.moveToNext()) { 93 user = new User(data.getLong(0), data.getString(1), data.getString(2), data.getString(3), data.getString(4)); 94 data1.add(i, user); 95 System.out.println(data.getString(3) + " " + data.getString(4)); 96 System.out.println(userList.get(i).getTitleName()); 97 i++; 98 } 99 ToDoAdapter todoadapter = new ToDoAdapter(this, R.layout.todo_adapter, data1); 100 listView1 = (ListView) findViewById(R.id.lv1_1); 101 listView1.setAdapter(todoadapter); 102 103 } 104 //db.execSQL("SELECT TODO1NAME FROM lv1_data WHERE ID ==" + UserId); 105 106 } 107 } 108 109 //タブ1のリストを長押しした場合 110 private class OnItemLongClickListener implements AdapterView.OnItemLongClickListener { 111 112 public boolean onItemLongClick(AdapterView<?> parent, View view , int position, long id) { 113 //ダイアログ準備 114 AlertDialog.Builder builder = new AlertDialog.Builder(Tab_01.this); 115 builder.setTitle("削除しますか?"); 116 builder.setPositiveButton("はい", new DialogInterface.OnClickListener() { 117 @Override 118 public void onClick(DialogInterface dialog, int which) { 119 120 } 121 }); 122 builder.setNegativeButton("いいえ",null); 123 builder.setCancelable(true); 124 builder.show(); 125 return true; 126 } 127 } 128}
試したこと
上記のソースコード参照
・SQLのSELECT文を使おうとも考えました。ですが、その後どう書けばわからなくなり、一旦保留しました。
・data2というものにリストBに表示するためのアイテムを保存しようと考えました。
補足情報(FW/ツールのバージョンなど)
Gradleバージョン:7.0.2

回答1件
あなたの回答
tips
プレビュー