質問するログイン新規登録

質問編集履歴

7

一部のみのコード掲載よりコード全体の掲載・現在試行錯誤中のコード

2019/10/10 07:08

投稿

HokkaidoRamen
HokkaidoRamen

スコア40

title CHANGED
File without changes
body CHANGED
@@ -5,36 +5,124 @@
5
5
  ビルド後、リストビュー項目を長押しした際、一瞬のみ、項目がリストから消えますが、その後すぐにまた復活して、項目を短く押した際にインテントで遷移する次の項目の詳細画面に処理が進み、長押しした項目自体も削除されておりません。
6
6
 
7
7
  以下が私のコードです。
8
- final ArrayList<HashMap<String, String>> datalist1 = new ArrayList();
8
+
9
-                 .
10
-                 .
11
-                 .
12
9
 
10
+
11
+ import android.app.Activity;
12
+ import android.content.Intent;
13
+ import android.os.Bundle;
14
+ import android.view.View;
15
+ import android.widget.Button;
16
+
17
+
18
+ import android.widget.ArrayAdapter;
19
+ import android.widget.AdapterView;
20
+ import android.widget.ListView;
21
+ import android.database.Cursor;
22
+ import android.database.sqlite.SQLiteDatabase;
23
+
24
+ import android.widget.TextView;
25
+ import android.widget.Toast;
26
+
27
+ import java.util.ArrayList;
28
+ import java.util.HashMap;
29
+ import java.util.Map;
30
+
31
+
32
+ public class complist extends Activity {
33
+
34
+ private /*丙プロジェクトとアプリ名*/SimpleDatabaseHelper_bo1 helper = null;
35
+
36
+
37
+ @Override
38
+ protected void onCreate(Bundle savedInstanceState) {
39
+ super.onCreate(savedInstanceState);
40
+ setContentView(R.layout.complist_layout);
41
+
42
+
43
+ Integer pcontentid = 0;
44
+ String ptime = null;
45
+ String pname = null;
46
+
47
+ String stringid = null;
48
+
49
+
50
+
51
+ if (helper == null) {
52
+ helper = new SimpleDatabaseHelper_bo1(complist.this);
53
+ }
54
+
55
+
56
+ final ArrayList<HashMap<String, String>> datalist1 = new ArrayList();
57
+ // ArrayList datalist1 = new ArrayList();
58
+
59
+ SQLiteDatabase db1 = helper.getReadableDatabase();
60
+
61
+ try {
62
+
63
+ Cursor c3 = db1.rawQuery("SELECT * FROM "/*丙データベーステーブル名*/", null);
64
+ boolean next = c3.moveToFirst();
65
+ while (next) {
66
+ HashMap<String, String> data = new HashMap<>();
67
+
68
+ pcontentid = c3.getInt(0);
69
+ ptime = c3.getString(1);
70
+ pname = c3.getString(2);
71
+
72
+ stringid = String.valueOf(pcontentid);
73
+
74
+ data.put("ID", stringid);
75
+ data.put("Time", ptime);
76
+ data.put("Subject",pname);
77
+
78
+ datalist1.add(data);
79
+ next = c3.moveToNext();
80
+
81
+ }
82
+ c3.close();
83
+
84
+ }catch (Exception e){
85
+
86
+ TextView error = (TextView)findViewById(R.id.textview_error);
87
+ error.setText(getString(R.string.not_yet));
88
+
89
+ } finally {
90
+ db1.close();
91
+ }
92
+
93
+
94
+
13
- final ArrayAdapter adapter = new ArrayAdapter(this,
95
+ final ArrayAdapter adapter = new ArrayAdapter(this,
14
96
  android.R.layout.simple_list_item_1,
15
97
  datalist1);
16
98
 
17
99
 
18
-
19
-
20
- final ListView listView1 = (ListView) findViewById(R.id.listview1);
100
+ final ListView listView1 = (ListView) findViewById(R.id.listview1);
21
101
  listView1.setAdapter(adapter);
22
102
 
23
103
  listView1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){
24
104
  @Override
25
105
  public boolean onItemLongClick(AdapterView<?
26
106
  >parent, View view, int position, long id){
107
+ /*
108
+ HashMap<String, String> map1 = (HashMap<String, String>)listView1.parentAdapter.getItemAtPosition(position);
109
+ String value1 = map1.get("ID");
110
+ String value2 = map1.get("Time");
111
+ String value3 = map1.get("Subject");
27
- try {
112
+ try {
28
- String item = (String) adapter.getItem(position);
113
+ String item = (String)map1.get(position);
29
114
  }catch (Exception e){
30
115
 
31
116
  }
117
+ */
118
+
32
- adapter.remove(adapter.getItem(position));
119
+ String item1 = (String)parent.getItemAtPosition(position) ;
120
+ datalist1.remove(item1);
121
+
33
122
  adapter.notifyDataSetChanged();
34
123
  return false;
35
-
36
-
37
-
124
+
125
+
38
126
  }
39
127
 
40
128
  });
@@ -46,15 +134,20 @@
46
134
 
47
135
 
48
136
  String get_id2 = String.valueOf(id + 1);
49
- Intent intent4 = new Intent(this,
137
+ Intent intent4 = new Intent(complist.this,
50
- /*項目詳細のクラス*/);
138
+ user.win.hope.a_box_to_complain.compdisp.class);
51
139
  intent4.putExtra("did2",get_id2);
52
140
  startActivity(intent4);
53
141
 
54
142
  }
55
143
  });
56
144
 
145
+ }
57
146
 
147
+ }
148
+
149
+
150
+
58
151
  項目を削除する前にダイアログも表示させたいのですが、項目自体が削除されないので、次に進めずにとても困っております。
59
152
 
60
153
  もし、解決方法がお解りでいらっしゃいましたら、ご教授の程、宜しくお願い申し上げます。

6

2019/10/10 07:08

投稿

HokkaidoRamen
HokkaidoRamen

スコア40

title CHANGED
File without changes
body CHANGED
@@ -93,4 +93,6 @@
93
93
 
94
94
  HashMapを使わないで試してみましたが、うまくいきませんでした。
95
95
 
96
- itemにデータが入ってこないのがどうしてなのか、ここが怪しいのないでょうか…?
96
+ itemにデータが入っててないのは、間違ったキャストをているらですよね…?
97
+
98
+ キャストのExceptionがlogcatで出ておりますので、データのキャストをどうすれば良いのか、もし、お解りでいらっしゃいましたら、ご教授の程、お願い申し上げたい次第です。

5

2019/10/10 04:36

投稿

HokkaidoRamen
HokkaidoRamen

スコア40

title CHANGED
File without changes
body CHANGED
@@ -81,4 +81,16 @@
81
81
 
82
82
  String item = (String)adapter.getItem(position)
83
83
 
84
- のitemは「never used」と警告が出ております。
84
+ のitemは「never used」と警告が出ております。
85
+
86
+
87
+
88
+ --------------------------------------
89
+
90
+
91
+
92
+ 2019/10/10 PM13:25頃
93
+
94
+ HashMapを使わないで試してみましたが、うまくいきませんでした。
95
+
96
+ itemにデータが入ってこないのがどうしてなのか、ここが怪しいのではないでしょうか…?

4

2019/10/10 04:27

投稿

HokkaidoRamen
HokkaidoRamen

スコア40

title CHANGED
File without changes
body CHANGED
@@ -77,4 +77,8 @@
77
77
  HashMapを使っているので、keyとvalueの2つが必要なのに、無理やりStringでキャストしておりましたので、そこが問題でしょうか…?
78
78
 
79
79
 
80
- 現在、HashMapを使用せずにデータベースから項目のみ取得してリストビューに渡せるかどうか、試しております。
80
+ 現在、HashMapを使用せずにデータベースから項目のみ取得してリストビューに渡せるかどうか、試しております。
81
+
82
+ String item = (String)adapter.getItem(position)
83
+
84
+ のitemは「never used」と警告が出ております。

3

2019/10/10 03:59

投稿

HokkaidoRamen
HokkaidoRamen

スコア40

title CHANGED
File without changes
body CHANGED
@@ -67,7 +67,9 @@
67
67
  ただのlistなら、adapter.removeで削除出来ても、データベースのデータを使う場合は、データベース自体のカラムも削除しなければならないのでしょうか…?
68
68
 
69
69
 
70
+ --------------------------------------
70
71
 
72
+
71
73
  2019/10/10 PM12:40頃
72
74
 
73
75
  長押しで押されたitemを取得するときに、エラーで型が違うと表示されます。

2

2019/10/10 03:45

投稿

HokkaidoRamen
HokkaidoRamen

スコア40

title CHANGED
File without changes
body CHANGED
@@ -64,4 +64,15 @@
64
64
 
65
65
  今回のArraylistの項目にデータベースのデータを使用しており、短いクリックで項目の詳細画面にIntentしているのですが、その詳細画面で再び、データベースを開いて各々のデータを表示しております。
66
66
 
67
- ただのlistなら、adapter.removeで削除出来ても、データベースのデータを使う場合は、データベース自体のカラムも削除しなければならないのでしょうか…?
67
+ ただのlistなら、adapter.removeで削除出来ても、データベースのデータを使う場合は、データベース自体のカラムも削除しなければならないのでしょうか…?
68
+
69
+
70
+
71
+ 2019/10/10 PM12:40頃
72
+
73
+ 長押しで押されたitemを取得するときに、エラーで型が違うと表示されます。
74
+
75
+ HashMapを使っているので、keyとvalueの2つが必要なのに、無理やりStringでキャストしておりましたので、そこが問題でしょうか…?
76
+
77
+
78
+ 現在、HashMapを使用せずにデータベースから項目のみ取得してリストビューに渡せるかどうか、試しております。

1

2019/10/10 03:43

投稿

HokkaidoRamen
HokkaidoRamen

スコア40

title CHANGED
File without changes
body CHANGED
@@ -57,4 +57,11 @@
57
57
 
58
58
  項目を削除する前にダイアログも表示させたいのですが、項目自体が削除されないので、次に進めずにとても困っております。
59
59
 
60
- もし、解決方法がお解りでいらっしゃいましたら、ご教授の程、宜しくお願い申し上げます。
60
+ もし、解決方法がお解りでいらっしゃいましたら、ご教授の程、宜しくお願い申し上げます。
61
+
62
+
63
+ 追伸
64
+
65
+ 今回のArraylistの項目にデータベースのデータを使用しており、短いクリックで項目の詳細画面にIntentしているのですが、その詳細画面で再び、データベースを開いて各々のデータを表示しております。
66
+
67
+ ただのlistなら、adapter.removeで削除出来ても、データベースのデータを使う場合は、データベース自体のカラムも削除しなければならないのでしょうか…?