从适配器回调到monodroid中的活动

Flo*_*aal 0 android gridview xamarin.android xamarin

所以我的活动中有一个列表视图和一个gridview.两者都有定制适配器.如果执行DragAction.Drop,我会显示警报以确认操作.如果用户确认这一点,我将更改de数据库中的一些数据.现在数据已更改我需要刷新listview.该方法已存在但属于活动的一部分.我执行警报以及需要在适配器中执行的其他操作.所以我需要告诉活动,完成了drop的操作.因此活动可以调用refresh方法.

这是我在适配器中的DragAction.Drop的代码:

case DragAction.Drop:

                    truckNumber = e.Event.ClipData.GetItemAt (0).Text;
                    truckLabelText = e.Event.ClipDescription.Label;


                    AlertDialog.Builder alertBuilder = new AlertDialog.Builder (context);
                    alertBuilder.SetTitle ("Please confirm");
                    alertBuilder.SetMessage ("Are you sure you want to assign Truck: " + truckNumber + " to Dock: " + dockName.Text + "?");
                    alertBuilder.SetPositiveButton ("Yes", async delegate {

                        currentTruck.SetText (truckNumber, TextView.BufferType.Normal);
                        truckLabel.SetText (truckLabelText, TextView.BufferType.Normal);

                        await _DataLayer.changeTruckStatusCode (Convert.ToInt32 (truckNumber), 3);



                    });

                    alertBuilder.SetNegativeButton ("No", delegate {

                    });
                    alertBuilder.Show ();


                    e.Handled = true;

                    break;

                }
            };

            dockName.SetText (item.name.ToString (), TextView.BufferType.Normal);
            currentTruck.SetText ("", TextView.BufferType.Normal);
            truckLabel.SetText ("", TextView.BufferType.Normal);

            return view;

        }
Run Code Online (Sandbox Code Playgroud)

Tom*_*lec 5

您可以创建一个简单的界面.

public interface DragCompletedListener{
    void onDragComplete();
}
Run Code Online (Sandbox Code Playgroud)

然后,在你的网格适配器中准备一个成员变量:

private DragCompletedListener dragCompletedListener;
Run Code Online (Sandbox Code Playgroud)

准备setter方法:

public void setDragCompletedListener(DragCompletedListener dragCompletedListener){
    this.dragCompletedListener = dragCompletedListener;
}
Run Code Online (Sandbox Code Playgroud)

让您的活动实现DragCompletedListener.

并在您创建网格视图适配器的位置添加侦听器:

MyGridViewAdapter adapter = new MyGridViewAdapter();
adapter.setDragCompletedListener(this);
Run Code Online (Sandbox Code Playgroud)

在switch语句中,添加一个调用:

if (dragCompletedListener != null){
    dragCompletedListener.onDragCompleted();
}
Run Code Online (Sandbox Code Playgroud)