2015-08-28 3 views
2

Я использую 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?

ответ

0

Я вижу, вы уже используете Butterknife. Возможно, вы можете найти полезный RxBinding от JakeWharton. Его RxTextView может быть тем, что вы ищете.

+0

Я дам им попробовать :-) –

 Смежные вопросы

  • Нет связанных вопросов^_^