Событие @subscribe не запускается, когда событие запроса зарегистрировано из адаптера
Событие @subscribe (otto) не запускается в действии, когда событие запроса зарегистрировано из класса адаптера. Я не уверен, где я ошибаюсь с реализацией.
Экземпляр шины: // одноэлементный экземпляр класса шины Отто.
public class GlobalBus {
private static Bus bus;
public static Bus getBus() {
if (bus == null) {
bus = new Bus(ThreadEnforcer.ANY);
}
return bus;
}
}
Класс события: // класс событий
public class Events {
public static class NewsSourceChannel {
private String id, name;
public NewsSourceChannel(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
}
}
Adapter Class: // здесь я регистрирую данные события.
public class NewsSourceAdapter extends RecyclerView.Adapter<NewsSourceView> implements View.OnClickListener {
private LayoutInflater inflater;
private Context context;
private List<Source> sourceList;
private Source currentSource;
public NewsSourceAdapter(MainActivity mainActivity, List<Source> sourcesList) {
this.context = mainActivity;
this.sourceList = sourcesList;
inflater = mainActivity.getLayoutInflater();
}
@Override
public NewsSourceView onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.item_row, parent, false);
view.setOnClickListener(this);
return new NewsSourceView(view);
}
@Override
public void onBindViewHolder(NewsSourceView holder, int position) {
holder.populate(sourceList.get(position), context);
currentSource = sourceList.get(position);
}
@Override
public int getItemCount() {
return sourceList.size();
}
@Override
public void onClick(View v) {
//Toast.makeText(context, "yaya", Toast.LENGTH_SHORT).show();
sendMessage();
context.startActivity(new Intent(context, NewsActivity.class));
}
private void sendMessage() {
String name = currentSource.getName();
String id = currentSource.getId();
Events.NewsSourceChannel newsSourceChannel = new
Events.NewsSourceChannel(id, name);
GlobalBus.getBus().post(newsSourceChannel);
}
}
Subscriber Activity: // это класс, в котором я подписываюсь на событие.
public class NewsActivity extends AppCompatActivity {
private TextView txtName, txtID;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news);
txtName = (TextView) findViewById(R.id.txtName);
txtID = (TextView) findViewById(R.id.txtID);
}
@Subscribe
public void getNewsSource(Events.NewsSourceChannel newsSourceChannel) {
Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
String name = newsSourceChannel.getName();
txtName.setText(newsSourceChannel.getName());
txtID.setText(newsSourceChannel.getId());
}
@Override
protected void onStart() {
super.onStart();
GlobalBus.getBus().register(this);
}
@Override
protected void onStop() {
super.onStop();
GlobalBus.getBus().unregister(this);
}
}