2

Fragment に RecyclerView があります。この SO answerで説明されているように、アイテムのクリックは RxJava2 を使用して処理されます。非フラグメントでは正常に動作しています。

private PublishSubject<Place> itemViewClickSubject = PublishSubject.create();

@Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.search_result_view, parent, false);

        ViewHolder viewHolder = new ViewHolder(view);

        // convert click events into reactive stream
        RxView.clicks(view)
                .takeUntil(RxView.detaches(parent))
                // viewHolder.getPlace() is null until it get bound
                .map(__ -> viewHolder.getPlace())
                .subscribe(itemViewClickSubject);

        return viewHolder;
    }

フラグメントの RecyclerView が 1 回だけ正常に動作する場合。アイテムをクリックすると、フラグメントが別のフラグメントに置き換えられます。バック プレスの後、RecyclerView フラグメントが表示されますが、クリックが機能しなくなります。

行を削除すると機能し.takeUntil(RxView.detaches(parent))ます。RecyclerView が表示されていない場合 (Detached) には、RxView のクリックと RecyclerView との強力なバインディングを解除する必要があると思います。どうすれば問題を解決できますか? アタッチ/デタッチ イベントの 1 つを使用して問題を解決しようとしています。ありがとう。

4

1 に答える 1