質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

解決済

リストビュー項目削除出来ない。

EveryoneCanEat
EveryoneCanEat

総合スコア30

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

2回答

0リアクション

0クリップ

626閲覧

投稿2019/10/09 23:46

編集2019/10/10 07:08

お世話になっております。Android開発初心者です。

リストビュー項目が削除出来ません。

ビルド後、リストビュー項目を長押しした際、一瞬のみ、項目がリストから消えますが、その後すぐにまた復活して、項目を短く押した際にインテントで遷移する次の項目の詳細画面に処理が進み、長押しした項目自体も削除されておりません。

以下が私のコードです。

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import android.widget.ArrayAdapter;
import android.widget.AdapterView;
import android.widget.ListView;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class complist extends Activity {

private /*丙プロジェクトとアプリ名*/SimpleDatabaseHelper_bo1 helper = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.complist_layout); Integer pcontentid = 0; String ptime = null; String pname = null; String stringid = null; if (helper == null) { helper = new SimpleDatabaseHelper_bo1(complist.this); } final ArrayList<HashMap<String, String>> datalist1 = new ArrayList();

// ArrayList datalist1 = new ArrayList();

SQLiteDatabase db1 = helper.getReadableDatabase(); try { Cursor c3 = db1.rawQuery("SELECT * FROM "/*丙データベーステーブル名*/", null); boolean next = c3.moveToFirst(); while (next) { HashMap<String, String> data = new HashMap<>(); pcontentid = c3.getInt(0); ptime = c3.getString(1); pname = c3.getString(2); stringid = String.valueOf(pcontentid); data.put("ID", stringid); data.put("Time", ptime); data.put("Subject",pname); datalist1.add(data); next = c3.moveToNext(); } c3.close(); }catch (Exception e){ TextView error = (TextView)findViewById(R.id.textview_error); error.setText(getString(R.string.not_yet)); } finally { db1.close(); } final ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, datalist1); final ListView listView1 = (ListView) findViewById(R.id.listview1); listView1.setAdapter(adapter); listView1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){ @Override public boolean onItemLongClick(AdapterView<? >parent, View view, int position, long id){ /* HashMap<String, String> map1 = (HashMap<String, String>)listView1.parentAdapter.getItemAtPosition(position); String value1 = map1.get("ID"); String value2 = map1.get("Time"); String value3 = map1.get("Subject"); try { String item = (String)map1.get(position); }catch (Exception e){ } */ String item1 = (String)parent.getItemAtPosition(position) ; datalist1.remove(item1); adapter.notifyDataSetChanged(); return false; } }); listView1.setOnItemClickListener(new AdapterView.OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> av, View view, int position, long id){ String get_id2 = String.valueOf(id + 1); Intent intent4 = new Intent(complist.this, user.win.hope.a_box_to_complain.compdisp.class); intent4.putExtra("did2",get_id2); startActivity(intent4); } }); }

}

項目を削除する前にダイアログも表示させたいのですが、項目自体が削除されないので、次に進めずにとても困っております。

もし、解決方法がお解りでいらっしゃいましたら、ご教授の程、宜しくお願い申し上げます。

追伸

今回のArraylistの項目にデータベースのデータを使用しており、短いクリックで項目の詳細画面にIntentしているのですが、その詳細画面で再び、データベースを開いて各々のデータを表示しております。

ただのlistなら、adapter.removeで削除出来ても、データベースのデータを使う場合は、データベース自体のカラムも削除しなければならないのでしょうか…?


2019/10/10 PM12:40頃

長押しで押されたitemを取得するときに、エラーで型が違うと表示されます。

HashMapを使っているので、keyとvalueの2つが必要なのに、無理やりStringでキャストしておりましたので、そこが問題でしょうか…?

現在、HashMapを使用せずにデータベースから項目のみ取得してリストビューに渡せるかどうか、試しております。

String item = (String)adapter.getItem(position)

のitemは「never used」と警告が出ております。


2019/10/10 PM13:25頃

HashMapを使わないで試してみましたが、うまくいきませんでした。

itemにデータが入ってきてないのは、間違ったキャストをしているからですよね…?

キャストのExceptionがlogcatで出ておりますので、データのキャストをどうすれば良いのか、もし、お解りでいらっしゃいましたら、ご教授の程、お願い申し上げたい次第です。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

jimbe

2019/10/10 06:56

コードは一部ではなく、出来るだけ全体をご提示ください. 行っている処理がどのメソッド内にあるかや, 実行される個所によって原因が異なる場合があります. また, コードはコード用の表記があります. "`"(バッククオート, SHIFT+@)を3つ並べた ``` という行をコードの上下に置くと, 専用の枠内にインデントも反映されて表示されますので, ご利用ください. (プレビューで確認できます.)
EveryoneCanEat

2019/10/10 06:58

本当にありがとうございます。 直ぐにコード全体を掲載致します。
EveryoneCanEat

2019/10/10 07:16

申し訳ありません。インデント出来ませんでした。 読んで下さるお気持ちだけで、本当に有難いです、本当ありがとうございます。
EveryoneCanEat

2019/10/10 07:17

コードを入れ替え致しました。
EveryoneCanEat

2019/10/10 07:26

海外のサイトも沢山調べましたが、どう、あがいても、長押ししたリスト項目が復活してしまいます。 ご多忙でお疲れの中、誠にありがとうございます。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。