Я использую RxJava для перемещения данных в ViewHolder, а внутри ViewHolder я использую RxJava для заполнения TextViews.Использование RxJava для привязки ViewHolder к RecyclerViewAdapter
Но иногда текстовые объекты по-прежнему пусты. Я думаю, что это вопрос времени, но я не имею понятия, как ее решить :-(
Это те важные методы из моего адаптера:
@Override
public DataEntityViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final LayoutInflater inflater = LayoutInflater.from(parent.getContext());
final View view = inflater.inflate(R.layout.cell_event, parent, false);
return new DataEntityViewHolder(view);
}
@Override
public void onBindViewHolder(DataEntityViewHolder holder, int position) {
final FacebookEvents.DataEntity item = mList.get(position);
holder.cellDataSubject.onNext(item);
}
И это мой ViewHolder
public class DataEntityViewHolder extends RecyclerView.ViewHolder {
@Bind(R.id.textView_cell_event_name) TextView mTextViewName;
@Bind(R.id.textView_cell_event_start) TextView mTextViewStart;
@Bind(R.id.textView_cell_event_end) TextView mTextViewEnd;
@NonNull public final PublishSubject<FacebookEvents.DataEntity> cellDataSubject;
public DataEntityViewHolder(@NonNull final View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
cellDataSubject = PublishSubject.create();
bind();
}
private void bind() {
cellDataSubject
.subscribe(item -> {
mTextViewName.setText(item.getName());
mTextViewStart.setText(DateUtils.getRelativeTime(item.getStart_time()));
mTextViewEnd.setText(DateUtils.getRelativeTime(item.getEnd_time()));
});
}
}
ли я что-то пропустила?
Должен ли я использовать BehaviorSubject
вместо PublishSubject
? Но когда я использую BehaviorSubject
, как это б est способ сбросить его, что, если представление используется повторно, я не вижу старый контент?
Необходимо ли добавить .subscribeOn()
?
Или это RxJava не лучший способ вывести данные из адаптера в ViewHolder?
Я дам им попробовать :-) –