gpt4 book ai didi

java - OnClick 用 fragment 替换 RecyclerView 中的 View

转载 作者:行者123 更新时间:2023-12-02 06:15:31 24 4
gpt4 key购买 nike

一旦在其 RecyclerView 中单击 View ,我就会尝试用详细信息 fragment 替换主视图。问题是,当单击 View 时, fragment 通常会插入到被单击的 View 的上方或下方。理想情况下,所附图像中看到的绿色 fragment 将用相应的日期替换 View 。

Emulator Screenshot

我尝试在 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();
}

我知道这个问题的版本已经被问过,但我找不到任何资源来用 fragment 替换 View ,而不是用 fragment 或 Activity 等替换 View 。

最佳答案

我想指出的是,我发现您基本上是在尝试为已单击的项目提供不同的 View 。我自己也有同样的想法。您还在列表项中添加进度条吗?

更改 View 本身有点破坏了拥有一些可以与新信息一起回收的 View 的整个想法。不是吗? (我还是想尝试一下)

我可以建议在所有 View 中包含您想要的内容,然后公开或隐藏它或插入新信息。这似乎就是你对进度条所做的事情?请记住,一个没有任何内容的 View 不会显示任何内容,但会占用空间。

另一件事是,在 View 回收时更新进度条或执行任何动画可能会给您带来麻烦。我喜欢你的推理,这是你的观点,你可以用它做你想做的:)但回收者观点可能有另一个计划。

关于java - OnClick 用 fragment 替换 RecyclerView 中的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55875152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com