0

削除ボタンのあるリストビュー項目があります。このボタンを押すと、行が削除されます。私のアダプターは、データが sqllite db に格納されるときに CursorAdapter を拡張します。

削除コードはカスタム アダプターにあります。

public void bindView(View view, final Context context, final Cursor c) {
    ViewHolder holder = (ViewHolder)view.getTag();

    if(holder == null){
        holder = new ViewHolder();
        holder.id = c.getInt(ID);
        holder.delB = (Button)view.findViewById(R.id.delB);

        final int id = holder.id;


        holder.delB.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                context.getContentResolver().delete(SeriesContentProvider.SERIES_CONTENT_URI,
                        DBHelper.COLUMN_ID+"=?", new String[]{String.valueOf(id)});

            }
        });


        view.setTag(holder);
 }

このリストがあるとします。

アイテム1 アイテム2 アイテム3

item2 を削除することにしました。すべて正常に動作します。

アイテム1 アイテム3

item3 を削除すると、次のようになります。

アイテム3

代わりにitem1が削除されました!なんで?

編集:最初に新しいアイテムを追加すると発生します。とにかく、アイテムを追加してアプリを閉じ、もう一度起動すると問題なく動作します。System.out で確認したところ、新しいアイテムを追加すると、ホルダー クラスの id 属性が台無しになっているようです...

4

1 に答える 1