2013-10-25 22 views
0

所以我在我的活動中有一個listview和一個gridview。兩者都有自定義適配器。如果執行了DragAction.Drop,我會顯示一條警告來確認該操作。如果用戶確認這一點,我將更改數據庫中的一些數據。現在數據已更改,我需要刷新列表視圖。該方法已經存在,但是該活動的一部分。我執行警報和其他需要在適配器中放置的操作。所以我需要告訴活動已完成放置操作。所以該活動可以調用刷新方法。從適配器到monodroid的活動回調

這是從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; 

     } 

回答

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(); 
} 
+0

這完美的作品!感謝您的快速幫助 –

相關問題