在视图的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();
}
我知道已经问过这个问题的版本,但是我找不到任何资源来用片段代替视图,而不是用片段或活动等代替片段。
答案 0 :(得分:0)
我想指出的是,我发现您基本上是在尝试对已单击的项目使用不同的视图。我自己也有同样的想法。您还在列表项中显示进度条吗?
更改视图本身会破坏整个想法,即拥有一些可用于新信息的视图。是不是(我仍然想尝试)
可能我建议在所有视图中都已经有了所需的内容,然后公开或隐藏它或插入新信息。这似乎是您在使用进度条所做的事情?记住,视图中什么也没有显示,什么也没有显示,但是确实占用了空间。
另一件事是,在回收视图时更新进度条或执行任何动画可能会给您带来麻烦。我喜欢您的推理,它是您的视图,您可以根据需要进行操作:),但是回收者视图可能有另一个计划。