使用接口在适配器的片段之间进行导航

问题描述 投票:0回答:1

我对片段有问题。在第一个片段中,我有一个recyclerview,当我单击某个项目时,它将带我到另一个片段。我为此目的定义了一个接口,但是不起作用。这是我适配器中的内容:

private List<KategoriteNested> kategoriteNested;
    private Context mContext;

    private static OnItemCLickListener mOnItemCLickListener;

    public void setOnItemCLickListener(OnItemCLickListener onItemCLickListener) {
        mOnItemCLickListener = onItemCLickListener;
    }

    public AllCategoriesAdapter(List<KategoriteNested> kategoriteNested, Context mContext) {
        this.kategoriteNested = kategoriteNested;
        this.mContext = mContext;
    }

    @NonNull
    @Override
    public AllCategoriesViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View mView = LayoutInflater.from(mContext)
                .inflate(R.layout.all_categories_item, parent, false);
        return new AllCategoriesAdapter.AllCategoriesViewHolder(mView);
    }

    @Override
    public void onBindViewHolder(@NonNull AllCategoriesViewHolder holder, int position) {
        KategoriteNested mKategoriteNested = kategoriteNested.get(position);
        String categoryEmertimi = mKategoriteNested.getKategoria().getName();
        holder.categoryEmertimi.setText(categoryEmertimi);

        holder.itemView.setOnClickListener(v -> {
            int index = holder.getAdapterPosition();
            mOnItemCLickListener.OnItemClick(index);
        });

    }

    public interface OnItemCLickListener{
        void OnItemClick(int position);
    }

    @Override
    public int getItemCount() {
        return kategoriteNested.size();
    }

    public static class AllCategoriesViewHolder extends RecyclerView.ViewHolder {

        TextView categoryEmertimi;

        public AllCategoriesViewHolder(@NonNull View itemView) {
            super(itemView);

            categoryEmertimi = itemView.findViewById(R.id.category_emertimi);
        }
    }

我使用getAdapterPosition()获得商品位置。在我的片段中,我有这个:

private void goToCategoriesFragment() {
        allCategoriesAdapter = new AllCategoriesAdapter(kategoriteNested, getContext());
        allCategoriesAdapter.setOnItemCLickListener(position -> {
            if (mOnItemCLickListener != null) {
                Fragment fragment = new CategoriesDetailsFragment();
                assert getFragmentManager() != null;
                FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
                fragmentTransaction.replace(R.id.container, fragment);
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();
            }
        });
    }

我单击该项目,但没有发生任何动作,我在logcat中也没有收到任何错误消息。我想知道我是否使用接口在片段和适配器之间进行正确的通信,还是缺少其他东西。有人可以给我一个解释,如何使用recyclerview在片段之间导航。任何帮助将不胜感激。

android android-fragments android-recyclerview recycler-adapter
1个回答
0
投票

使您的片段实现OnItemCLickListener接口,还对适配器constructor进行一些更改,以便您在其中传递列表,上下文和OnItemCLickListener实例。然后,使您的ViewHolders实现相同的接口,并将通过适配器构造函数获得的实​​例传递给viewHolder。

© www.soinside.com 2019 - 2024. All rights reserved.