所以我的活动中有listview和gridview。两者都有定制适配器。如果执行DragAction.Drop,我会显示警报以确认操作。如果用户确认这一点,我将更改de数据库中的一些数据。现在数据已更改我需要刷新listview。该方法已存在但属于活动的一部分。我执行警报以及需要在适配器中执行的其他操作。所以我需要告诉活动,完成了drop的操作。因此活动可以调用刷新方法。
这是我在适配器中的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;
}
答案 0 :(得分: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();
}