2
我使用RxJava將數據推送到ViewHolder和ViewHolder內部我使用RxJava填充TextViews。使用RxJava將ViewHolder綁定到RecyclerViewAdapter
但是有時TextView仍然是空的。我認爲這是一個時機的問題,但我沒有一個知道如何解決它:-(
這是從我的適配器的重要方法:
@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
是如何在b最好的方式來重置它,如果視圖重用,我沒有看到舊的內容?
我需要添加.subscribeOn()
嗎?
或者是RxJava不是將數據從適配器推送到ViewHolder的最佳方式?
我會給他們一個嘗試:-) –