Я использую службу обмена сообщениями firebase для обмена сообщениями и уведомлений. Кажется, я не могу передать входящее сообщение от службы к адаптеру, чтобы при получении сообщения его можно было вставить в список RecycleView.Добавить элемент списка в адаптер RecyclerView при получении сообщения Firebase
Я попытался с помощью BroacastIntent следующим образом:
public class messaging extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage m) {
store(m.getData());
broadcastIntent();
}
public void broadcastIntent() {
Intent intent = new Intent();
intent.setAction("com.myApp.CUSTOM_EVENT");
sendBroadcast(intent);
}
}
и в Adpter
public class ConvoAdapter extends RecyclerView.Adapter<ConvoHolder> {
private List<Message> list;
private Activity A;
public ConvoAdapter(List<Message> data) {
}
@Override
public ConvoHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(layout, parent, false);
return new ConvoHolder(v);
}
@Override
public void onBindViewHolder(ConvoHolder h, int Position) {
final Message M = list.get(Position);
h.config(A, M);
}
@Override
public int getItemCount() {
return list.size();
}
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();
}
}
}
И манифеста.
<receiver android:name=".fragments.chats.ConvoAdapter$MyReceiver"
android:enabled="true"
android:exported="false" >
<intent-filter>
<action android:name="android.intent.action.CUSTOM_EVENT">
</action>
</intent-filter>
</receiver>
как есть, широковещательный приемник не получает никаких сообщений.
Я также использовал бы любой другой метод, который не предполагает использование широковещательных приемников.
То, что вы дали нам это BroadcastReceiver класс не ваш адаптер. –
Да Адаптер является классом класса BroadCastReceiver. Я отредактирую, чтобы заключить его. – Relm
@RushiAyyappa см. Новое редактирование. – Relm