C# Xamarin Android拖放列表视图
我正在尝试在我的项目中使用拖放列表视图。我在模仿这个项目:,在这个视频中解释道:。我基本上只是尽力把它翻译成C 这只是一种效果。这辆车非常多。长按之后,我可以把这一行拖来拖去。当我将底部的一行拖到上面的一行时,下面的一行在两行内容之间快速闪烁,就好像它们在一次又一次地来回切换一样。他们从未真正正确地切换或更新 另一个问题是,当我放开正在拖动的行时,在C# Xamarin Android拖放列表视图,c#,android,listview,drag-and-drop,xamarin,C#,Android,Listview,Drag And Drop,Xamarin,我正在尝试在我的项目中使用拖放列表视图。我在模仿这个项目:,在这个视频中解释道:。我基本上只是尽力把它翻译成C 这只是一种效果。这辆车非常多。长按之后,我可以把这一行拖来拖去。当我将底部的一行拖到上面的一行时,下面的一行在两行内容之间快速闪烁,就好像它们在一次又一次地来回切换一样。他们从未真正正确地切换或更新 另一个问题是,当我放开正在拖动的行时,在hoverviewmanimator.Start()上会出现NullPointerException。我无法使用此方法,因此很难确定什么是空值 以下
hoverviewmanimator.Start()
上会出现NullPointerException。我无法使用此方法,因此很难确定什么是空值
以下是与空异常相关的代码:
private void touchEventsEnded()
{
View mobileView = getViewForID(mMobileItemId);
if (mCellIsMobile || mIsWaitingForScrollFinish)
{
mCellIsMobile = false;
mIsWaitingForScrollFinish = false;
mIsMobileScrolling = false;
mActivePointerId = INVALID_POINTER_ID;
if (mScrollState != (int)ScrollState.Idle)
{
mIsWaitingForScrollFinish = true;
return;
}
mHoverCellCurrentBounds.OffsetTo(mHoverCellOriginalBounds.Left, mobileView.Top);
ObjectAnimator hoverViewAnimator = ObjectAnimator.OfObject(mHoverCell, "bounds", new sBoundEvaluator(), mHoverCellCurrentBounds);
hoverViewAnimator.Update += (sender, e) =>
{
Invalidate();
};
hoverViewAnimator.AnimationStart += (sender, e) =>
{
Enabled = false;
};
hoverViewAnimator.AnimationEnd += (sender, e) =>
{
mAboveItemId = INVALID_ID;
mMobileItemId = INVALID_ID;
mBelowItemId = INVALID_ID;
mobileView.Visibility = ViewStates.Visible;
mHoverCell = null;
Enabled = true;
Invalidate();
};
hoverViewAnimator.Start(); // null pointer exception thrown here
}
else
touchEventsCancelled();
}
如果您有足够的勇气阅读我的更多代码,下面是其余部分:
DragableListView.cs:
IDragableAdapter.cs:
BaseDragableAdapter.cs:我还将DevBytes教程部分移植到C#,用于Xamarin Android项目。您可以在这里查看:。而不是使用ViewTreeObserver的PreDraw事件。我先做了translation-y动画,然后在对象Animator的AnimationEnd事件上更新数据集。