При удалении элемента из RecyclerView возникает проблема

Вы можете сделать это с помощью ffmpeg с помощью фильтра amerge:

ffmpeg -i input1.mp3 -i input2.mp3 -filter_complex amerge -ac 2 -c:a libmp3lame -q:a 4 output.mp3

0
задан ישו אוהב אותך 25 February 2019 в 06:27
поделиться

1 ответ

Это потому, что вы пытаетесь удалить некоторые элементы с List.remove(position) последовательно. Вы, вероятно, удаляете ту же позицию элемента с помощью следующего кода:

asset_type.remove(position);
asset_count.remove(position);
asset_value.remove(position);
AssetDetailsActivity.assetValueId.remove(position);
AssetDetailsActivity.assetCountId.remove(position);
AssetDetailsActivity.assetTypeId.remove(position);

Источником проблемы обычно является то, что вы забыли, что не примитивный тип данных всегда передается ссылка, например: а List.

В следующем типичном адаптере RecylerView список (List<YourDatum> data) передается по ссылке:

public class YourAdapter extends
    RecyclerView.Adapter<YourAdapter.ViewHolder> {

    ..

    private List<YourDatum> mData;

    public YourAdapter(List<YourDatum> data) {
        mData = data;
    }
}

и мы обычно передаем список через конструктор с помощью:

[112 ]

Итак, и YourActivity.mData, и YourAdapter.mData указывают на одно и то же место. Следовательно, всякий раз, когда вы удаляете элемент из YourActivity.mData, элемент YourAdapter.mData также удаляется.

Теперь вам нужно использовать только следующий код для вашего дела:

asset_type.remove(position);
asset_count.remove(position);
asset_value.remove(position);

// the following is not needed because it's incorrect
// AssetDetailsActivity.assetValueId.remove(position);
// AssetDetailsActivity.assetCountId.remove(position);
// AssetDetailsActivity.assetTypeId.remove(position)
0
ответ дан ישו אוהב אותך 25 February 2019 в 06:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: