如何从片段中的 RecyclerView 适配器启动活动

Pan*_*ain 2 android android-fragments android-recyclerview

我无法点击RecyclerView到一个新ActivityRecyclerViewAdapter

ItemClick在这里打电话。

DayAdapter.java :

holder.setItemClickListener(new ItemClickListener() {
        @Override
        public void onClick(View view, int position, boolean isLongClick) {
            openProgramActivity(view, position);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

此功能打开一个新的Activity

public void openProgramActivity(View view, int position) {
    //Intent openProgramActivity = new Intent(context, ProgramActivity.class);
    Intent openProgramActivity = new Intent(view.getContext(), ProgramActivity.class);
    openProgramActivity.putExtra("index",position);
    view.getContext().startActivity(openProgramActivity);
}
Run Code Online (Sandbox Code Playgroud)

FragmentDay30.java

public class FragmentDay30 extends Fragment {

private View view;

public static FragmentDay30 newInstance() {
    FragmentDay30 fragment = new FragmentDay30();
    Bundle args = new Bundle();
    fragment.setArguments(args);
    return fragment;
}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

    view = inflater.inflate(R.layout.fragment_30day, container,false);

    ViewPager slideViewPager = (ViewPager) view.findViewById(R.id.slideViewPager);
    SlideAdapter slideAdapter = new SlideAdapter(getActivity());
    slideViewPager.setAdapter(slideAdapter);

    RecyclerView fragment30datRecyclerView = (RecyclerView) view.findViewById(R.id.fragment30dayRecyclerView);
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false);
    fragment30datRecyclerView.setLayoutManager(linearLayoutManager);
    DayAdapter dayAdapter = new DayAdapter(getActivity());
    fragment30datRecyclerView.setAdapter(dayAdapter);

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

我尝试使用getActvity()andgetContext()但不是 new Activity

小智 7

像这样将 contaxt 传递给 recyclerview 适配器构造函数

Context context;
MyAdapter(Context context, .....){
this.context=context;
}
Run Code Online (Sandbox Code Playgroud)

通话活动

context.startActivity(......);
Run Code Online (Sandbox Code Playgroud)