У меня есть 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
, поэтомуэто выглядит меньше, чем до переезда.Это единственное изменение.Значок правильный, просто по-разному масштабируется.
Иногда это работает как задумано, вы перетаскиваете и значки остаются прежними.Иногда вам даже не нужно перемещать предметы, просто долгое нажатие и отпускание вызывает эту ошибку.
Кто-нибудь имеет какие-либо идеи, почему это происходит?
Спасибо.