Java
Android

カスタムモデルを利用したカスタムAdapterの要素の削除方法

カスタムAdapterの要素が消えない!

カスタムモデルを使ったAdapterの要素を、adapter.remove(item)で消そうとしても消えません。

ダメな例
@Override
public void onItemClick(final AdapterView<?> adapterView, View view, final int i, long l) {
            OriginalItem item = (OriginalItem) mItemAdapter.getItem(i);
            mItemAdapter.remove(item);
            list.setAdapter(mItemAdapter);
}

これだと削除されません。

どうしよう!

なので、カスタムAdapterクラスに削除機能を実装します。

ItemAdapter.java
//省略

public void delete(int pos){
        itemList.remove(pos);
}

//省略

カスタムAdapterの要素が保持されてるItemListはArrayList<>型なので、positionで削除することができます。

あとはこれを呼ぶだけです。

実装例
@Override
public void onItemClick(final AdapterView<?> adapterView, View view, final int i, long l) {
            mItemAdapter.delete(i);
            list.setAdapter(mItemAdapter);
}