2013-10-25 8 views
0

Итак, у меня есть список и gridview в моей деятельности. Оба имеют пользовательские адаптеры. Если выполняется DragAction.Drop, я показываю предупреждение для подтверждения действия. Если пользователь подтвердит это, я изменю некоторые данные в базе данных. Теперь данные изменены. Мне нужно обновить listview. Метод уже существует, но является частью активности. Я выполняю предупреждение и другие действия, которые необходимо выполнить при отключении адаптера. Поэтому мне нужно сообщить о том, что действия для капли завершены. Таким образом, активность может вызвать метод обновления.Обратный звонок от адаптера к активности в монодоиде

Это мой код из 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; 

подготовить сеттер метод:

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

Пусть ваша деятельность, осуществляемая DragCompletedListener.

и добавить слушателя в том месте, создать вид сетки адаптер:

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

В коммутатору заявлении добавить вызов:

if (dragCompletedListener != null){ 
    dragCompletedListener.onDragCompleted(); 
} 
+0

Это отлично работает !! спасибо за быструю помощь –

Смежные вопросы