从RecyclerView点击CardView加载片段

pri*_*ank 4 android fragment android-cardview android-recyclerview

我有一个RecyclerViewCardView它里面.现在我要做的是Fragment点击CardView 加载一个简单的.我无法使用FragmentManager或SupportFragmentManager执行此操作.请给我一些指示.

我的RecyclerViewAdapder和ViewHolder是......

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
    private String[] eventName;
    private String[] eventBrief;

    public static class ViewHolder extends RecyclerView.ViewHolder {

        public TextView textViewName, textViewBrief;
        public CardView cardView;

        public ViewHolder(View v) {
            super(v);

            textViewName = (TextView)v.findViewById(R.id.textViewName);
            textViewBrief = (TextView)v.findViewById(R.id.textViewBrief);
            final Context context = v.getContext();
            cardView = (CardView)v.findViewById(R.id.card_view);

            cardView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    EventFragment eventFragment = EventFragment.newInstance();
                    // Load and view eventFragment here??
                }
            });
        }
    }

    public RecyclerViewAdapter(String[] eventName, String[] eventBrief) {
        this.eventName = eventName;
        this.eventBrief = eventBrief;

    }

    @Override
    public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
                                                   int viewType) {
        View v = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.my_card_view, parent, false);
        return new ViewHolder(v);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.textViewName.setText(eventName[position]);
        holder.textViewBrief.setText(eventBrief[position]);
    }

    @Override
    public int getItemCount() {
        return eventName.length;
    }
}
Run Code Online (Sandbox Code Playgroud)

vip*_*per 7

一个简单的实现是在添加onClickListener()ViewHolderitemView中的构造函数Adapter.

    public MyViewHolder(View view) {
        super(view);

        itemView.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){

                AppCompatActivity activity = (AppCompatActivity) view.getContext();
                Fragment myFragment = new MyFragment();
                activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, myFragment).addToBackStack(null).commit();


            }
        });
    }
Run Code Online (Sandbox Code Playgroud)


Bla*_*elt 5

我无法使用FragmentManager或SupportFragmentManager执行此操作

那是因为RecyclerViewAdapter没有引用FragmentManager.您应该与托管RecyclerView该事件的活动/片段进行通信,然后从那里开始片段.为此,请在此处查看我的答案