Я пытаюсь заменить главный вид фрагментом детали после того, как вид был нажат в пределах 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();
}
Я знаю, что версии этого вопроса уже задавались, но я не смог найти какой-либо ресурс для замены представления фрагментом, а не фрагментом с фрагментом или действием и т. Д.