«

android draglistview中拖动异常显示,无法移动到原先位置

时间:2024-3-2 19:04     作者:韩俊     分类: Android


这几天在网上找了draglistview可拖动的列表组件,写demo时发现列表在同方向拖动时没有问题,但在拖动中改变方向,如先向上后向下这样就会出现移动到原来位置时,listview不再出现实时移动效果,打了log观察后发现在启动动画之前会有

int tempPosition = pointToPosition(0, y);
if (tempPosition == INVALID_POSITION || tempPosition == lastPosition) {
return;
}

这样的判断,再拖动回原先位置时获取的tempPosition一直为-1,即移动到了不可用的listview的item上,导致直接返回,也就不进行相应的item位置交换。查看代码后发现在listview getView中是这样写的

convertView = LayoutInflater.from(context).inflate(
R.layout.drag_list_item, null);

//将正在拖动的item直接隐藏或不可见

convertView.setVisibility(View.GONE/INVISIBLE)

这样处理会导致pointToPosition(0, y);值永远为-1,思来想去也没有好方法,“曲线救国”直接将item隐藏于背景中view.setImageResource(android.R.color.darker_gray)解决这一问题。

方法不是很好,但暂时解决了

标签: android

热门推荐