Событие @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);
}
}

0 ответов

Другие вопросы по тегам