2015-09-10 3 views
0

Я хочу отображать уведомление, когда условие завершено в моем адаптере данных, как я могу это сделать? Уведомление У меня есть хорошая работа, когда я инициализирую основную активность или вызываю их с помощью (MainActivity)getActivity().method в фрагменте, но я хочу назвать их из другого класса?Вызов уведомлений в других классах

+0

Можете ли вы четко объяснить, что вы хотите сделать ??? –

+0

, когда условие закончено в моем адаптере данных, я хочу вызвать общедоступное уведомление о пустоте, находящееся в основном действии – DDD1994

ответ

0

Лучший способ - передать обратный вызов адаптеру данных и вызвать его при возникновении события.

Таким образом, вы можете использовать что-то вроде этого:

public class DataAdapter { 
    public interface OnMyEventListener{ 
     void onMyEvent(); 
    } 

    private OnMyEventListener mOnMyEventListener; 

    public void setOnMyEventListener(OnMyEventListener onMyEventListener) { 
     mOnMyEventListener = onMyEventListener; 
    } 

    private void fireOnMyEvent(){ 
     if (mOnMyEventListener != null){ 
      mOnMyEventListener.onMyEvent(); 
     } 
    } 
} 

Чтобы использовать его, вы должны сделать вашу деятельность реализовать интерфейс OnMyEventListener и добавить метод onMyEvent();

public void onMyEvent(){ 
    showNotification(); 
} 

И после создания адаптера вы можете установить активность слушать его с помощью вызова метода setOnMyEventListener. Каждый раз, когда вы обнаруживаете событие, вы можете вызвать метод fireOnMyEvent в адаптере.

И вы можете установить слушателя следующим способом:

DataAdapter adapter = new DataAdapter(); 
adapter.setOnMyEventListener(this). 

Update: Если вы имеете в виду путем уведомления «система оповещения» http://developer.android.com/guide/topics/ui/notifiers/notifications.html вы можете сделать это путем передачи контекста адаптера и делать то же самое что вы делаете в своей деятельности, за исключением того, вы не можете позвонить напрямую

NotificationManager mNotificationManager = 
    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

следует использовать объект контекста, который вы проходите, так что вы можете позвонить:

(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
+0

понять все это, и я думаю, что могу работать, но не знаю, где положить setOnMyEventListener – DDD1994

+0

, вы можете сделать это после того, как вы создали экземпляр адаптера: –

+0

да, я имею в виду системное уведомление, поэтому вы говорите, что есть другой метод, который я могу назвать его напрямую? без выполнения всего кода выше? – DDD1994

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