0

所以我的活动中有一个列表视图和一个网格视图。两者都有自定义适配器。如果执行 DragAction.Drop,我会显示一个警报以确认该操作。如果用户确认这一点,我将更改数据库中的一些数据。现在数据已更改,我需要刷新列表视图。该方法已经存在,但它是活动的一部分。我执行在适配器中放置时需要执行的警报和其他操作。所以我需要告诉活动丢弃的动作已经完成。所以activity可以调用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;

        }
4

1 回答 1

5

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

public interface DragCompletedListener{
    void onDragComplete();
}

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

private DragCompletedListener dragCompletedListener;

准备setter方法:

public void setDragCompletedListener(DragCompletedListener dragCompletedListener){
    this.dragCompletedListener = dragCompletedListener;
}

让您的活动实现 DragCompletedListener。

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

MyGridViewAdapter adapter = new MyGridViewAdapter();
adapter.setDragCompletedListener(this);

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

if (dragCompletedListener != null){
    dragCompletedListener.onDragCompleted();
}
于 2013-10-25T12:39:20.747 回答