Posted at

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

More than 1 year has passed since last update.


カスタム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);
}