При перетаскивании RecyclerView изменяет только тип масштаба изображения. - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть recyclerview, у которого есть перетаскивание.viewholder заполняется некоторой информацией о продукте.

В классе viewholder у меня есть функция с именем bindPoductInfo, которая принимает в качестве аргумента объект ProductInfo.Внутри этой функции я присваиваю соответствующую информацию соответствующим полям (ProductInfo.title - productTitle TextView и т. Д.), А мой viewholder имеет imageview, который изменяется в зависимости от состояния продукта.

Каждый продукт имеет один из трех типов или «состояний»:
- загружен = true
- загружен = false
- загружен = true И аннотация = "PDF"

Итак, bindProductInfo имеет код:

public void bindProductInfo(ProductInfo productInfo) {


    //field - value assignations go here
    // [...]

    // here i set the icon to the imageView
    if (productInfo.downloaded) {
        if(productInfo.annotation.contains("PDF File")
            imageView.setScaleType(ImageView.ScaleType.MATRIX);
            imageView.setImageResource(R.drawable.pdf_holder_icon);
            imageView.setTranslationX(-context.getResources().getDimension(R.dimen.iconwidth)/2);
            imageView.setOnLongClickListener(v-> {
                // long click actions
            });
        } else {
            imageView.setTranslationX(0);
            imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
            imageView.setImageResource(R.drawable.checkmark);
        }
    }
    else {
        imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
        imageView.setImageResource(R.drawable.cloud);
    }
} 

Как видите, если продукт загружен, а аннотация содержит pdf, я установил значок pdf, который больше двух других (и яхочу, чтобы он был больше), поэтому я изменяю масштаб imageView на MATRIX, перемещаю его немного влево (с translationX()) и внедряю прослушиватель longclick.

Если продукт загруженно аннотация не содержит PDF, переместите вид в исходное положение, установите scaletype для imageview на CENTER_INSIDE и установите ресурс для рисования.

Если продукт не загружен, установитеscaletype и только значок.

Таким образом, когда я долго нажимаю на элемент (не на значок), я могу перетаскивать и делать все правильно (исправить информацию о правильных полях, правильные индексы сортировки и т. Д.)За исключением того, что значок pdf scaletype будет изменен на CENTER_INSIDE, поэтомуэто выглядит меньше, чем до переезда.Это единственное изменение.Значок правильный, просто по-разному масштабируется.

Иногда это работает как задумано, вы перетаскиваете и значки остаются прежними.Иногда вам даже не нужно перемещать предметы, просто долгое нажатие и отпускание вызывает эту ошибку.

Кто-нибудь имеет какие-либо идеи, почему это происходит?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...