質問: (String)adapter.getItem(position) のitemは「never used」と警告が出ております。 --- 2019/10/10 PM13:25頃 HashMapを使わないで試してみましたが、うまくいきませんでした。 itemにデータが入ってきてないのは、間違ったキャストをしているからですよね...? キャストのExceptionがlogcatで出ておりますので、データのキャストをどうすれば良いのか、もし、お解りでいらっしゃいましたら、ご教授の程、お願い申し上げたい次第です。
回答: Adapter のデータの削除は Adapter.remove であっています. また, Adapter に特に設定していなければ, Adapter.remove 内で notifyDataSetChanged も呼ばれますので別途の呼び出しは不要です. 一瞬削除されてから再度表示されるのでしたら, 削除処理後に再度データベースを読む処理がどこかで行われている可能性があります. さらには, 削除処理がDBから「行」(カラムでは無いですよね?)を削除することを意味するのであれば, 当然 adapter からの削除だけでなくDBデータの削除を実装・実行しなければなりません. ご提示のコードにはDBの行の削除は見当たりませんので, adb で確認せずとも, 行は削除されていないと思います. > > 長押しで押されたitemを取得するときに、エラーで型が違うと表示されます。 > > String item = (String)adapter.getItem(position) > > > この場合 getItem の戻りの型は HashMap ではないでしょうか. ``` HashMap item = (HashMap)adapter.getItem(position) ``` とされては如何でしょう. > > のitemは「never used」と警告が出ております。 > > > 使われていませんので当然です. すぐに使う予定が無いのでしたら, コメント化しておけば良いかと思います. ``` String item1 = (String)parent.getItemAtPosition(position) ; datalist1.remove(item1); adapter.notifyDataSetChanged(); ``` は単に ``` adapter.remove(parent.getItemAtPosition(position)); ``` では如何でしょうか.