OnClick Замена представления в RecyclerView фрагментом - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь заменить главный вид фрагментом детали после того, как вид был нажат в пределах RecyclerView. Проблема заключается в том, что при щелчке по представлению фрагмент обычно вставляется над или под представлением, по которому щелкнули. В идеале зеленый фрагмент, видимый на прилагаемом изображении, должен заменить вид соответствующей датой.

Скриншот эмулятора

Я пытался сделать эту работу в ListView вместо RecyclerView, но результат точно такой же.

Вот посмотрите на RecyclerView.Adapter

 @Override
    public void onBindViewHolder(@NonNull MainViewHolder holder, int position) {

        holder.nameView.setText(shows.get(position).getName());
        holder.staffView.setText(shows.get(position).getWorkSchedule());
        holder.dateView.setText(shows.get(position).getDate());
        holder.linearLayout.setOnClickListener(this);
        holder.linearLayout.setTag((int)position);
    }

    @Override
    public int getItemCount() {

        return shows.size();
    }

    @Override
    public void onClick(View v) {
        int eventId = shows.get((int) v.getTag()).getEventId();
        String date = shows.get((int) v.getTag()).getDate();

        DetailedEvent fragment = new DetailedEvent();
        Bundle bundle = new Bundle();
        v.findViewById(R.id.progress_bar).setVisibility(View.VISIBLE);
        Observable<EventStats> eventStats = dag.apiCaller().fetchOneEventStats(eventId);
        dag.apiCaller().fetchEventSnapshot(eventId).observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io())
                .zipWith(dag.apiCaller().fetchOneEventStats(eventId), new BiFunction<EventSnapshot, EventStats, Object>() {
                    @Override
                    public Object apply(EventSnapshot eventSnapshot, EventStats eventStats) throws Exception {
                        bundle.putString("sold", (eventSnapshot.getRevenueProducingTickets() + "/" + eventSnapshot.getCapacity()));
                        bundle.putString("description", eventStats.getDescription());
                        bundle.putString("name", eventSnapshot.getName());
                        bundle.putString("date", date);
                        fragment.setArguments(bundle);
                        FragmentTransaction fTrans = fragMan.beginTransaction()
                                .setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right, 0, R.anim.slide_out_right);
                        fTrans.replace(R.id.linear_layout, fragment).addToBackStack(fragment.toString()).commit();
                        v.findViewById(R.id.progress_bar).setVisibility(View.INVISIBLE);
                        return bundle;
                    }
                }).subscribe();
    }

Я знаю, что версии этого вопроса уже задавались, но я не смог найти какой-либо ресурс для замены представления фрагментом, а не фрагментом с фрагментом или действием и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...