Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin Android拖放列表视图_C#_Android_Listview_Drag And Drop_Xamarin - Fatal编程技术网

C# Xamarin Android拖放列表视图

C# Xamarin Android拖放列表视图,c#,android,listview,drag-and-drop,xamarin,C#,Android,Listview,Drag And Drop,Xamarin,我正在尝试在我的项目中使用拖放列表视图。我在模仿这个项目:,在这个视频中解释道:。我基本上只是尽力把它翻译成C 这只是一种效果。这辆车非常多。长按之后,我可以把这一行拖来拖去。当我将底部的一行拖到上面的一行时,下面的一行在两行内容之间快速闪烁,就好像它们在一次又一次地来回切换一样。他们从未真正正确地切换或更新 另一个问题是,当我放开正在拖动的行时,在hoverviewmanimator.Start()上会出现NullPointerException。我无法使用此方法,因此很难确定什么是空值 以下

我正在尝试在我的项目中使用拖放列表视图。我在模仿这个项目:,在这个视频中解释道:。我基本上只是尽力把它翻译成C

这只是一种效果。这辆车非常多。长按之后,我可以把这一行拖来拖去。当我将底部的一行拖到上面的一行时,下面的一行在两行内容之间快速闪烁,就好像它们在一次又一次地来回切换一样。他们从未真正正确地切换或更新

另一个问题是,当我放开正在拖动的行时,在
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事件上更新数据集。