我在项目中使用导航组件。
当我单击recyclerview项目时,它将打开新的片段,我想在它们之间放置过渡动画。
我尝试了一些解决方案,但是没有用。
HomeFragment.java
public class HomeFragment extends Fragment {
...
private View.OnClickListener itemClickListener = view -> {
RecyclerView.ViewHolder viewHolder = (RecyclerView.ViewHolder) view.getTag();
int position = viewHolder.getAdapterPosition();
if (position != RecyclerView.NO_POSITION && mList.size() > 0) {
Restaurant thisItem = mList.get(position);
Bundle bundle = new Bundle();
bundle.putInt("id", thisItem.getId());
Navigation.findNavController(view).navigate(R.id.action_home_to_restaurantFragment, bundle);
}
};
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initialize();
getData();
}
private void initialize() {
if (mAdapter == null) {
mAdapter = new MyAdapter(getActivity(), mList);
mAdapter.setOnItemClickListener(itemClickListener);
} else {
mAdapter.notifyDataSetChanged();
}
linearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(mAdapter);
}
}
和MyAdapter.java
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final Context mContext;
private List<Item> mList;
private View.OnClickListener mOnItemClickListener;
public MyAdapter(Context mContext, List<Item> mList) {
this.mContext = mContext;
this.mList = mList;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.item_layout, parent, false);
return new ItemViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
if (holder instanceof ItemViewHolder) {
final ItemViewHolder itemVH = (ItemViewHolder) holder;
final Item data = mList.get(position);
itemVH.textViewName.setText(data.getName());
Glide.with(mContext).load(data.getLogo()).into(itemVH.imageViewLogo);
}
}
public void setOnItemClickListener(View.OnClickListener itemClickListener) {
mOnItemClickListener = itemClickListener;
}
private class ItemViewHolder extends RecyclerView.ViewHolder {
TextView textViewName;
ImageView imageViewLogo;
ItemViewHolder(View itemView) {
super(itemView);
itemView.setTag(this);
itemView.setOnClickListener(mOnItemClickListener);
textViewName = itemView.findViewById(R.id.textViewName);
imageViewLogo = itemView.findViewById(R.id.imageViewItem);
}
}
}
如何使用从imageView(recyclerViewItem)到导航组件的下一个片段的共享过渡?