单击recyclelerview项时如何打开viewpager片段

时间:2016-12-01 04:16:26

标签: android android-fragments android-viewpager

我是android的新手。我有一个导航抽屉,我使用了recyclerview作为项目。我有三个选项卡代表viewpager中的三个片段。我的问题是我无法通过单击回收站视图项打开片段。另一个问题是我尝试了FragmentTransaction,但不知道如何获取片段ID。请帮助我,我坚持下去。你可以给我任何教程链接。

这是我的代码......

在我的recyclerview适配器中,我尝试过:

public void onBindViewHolder(MyViewHandler holder, int position) {

    final Information current = data.get(position);
    holder.title.setText(current.title);
    holder.icon.setImageResource(current.iconId);
    holder.title.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            fragmentJump(current);
        }
    });

}
private void fragmentJump(Information mItemSelected) {
    mFragment = new FragmentIncome();
    mBundle = new Bundle();
    mBundle.putParcelable("item_selected_key", mItemSelected);// here my Information class is not parcelable how to solve it?
    mFragment.setArguments(mBundle);
    switchContent(R.id.frag1, mFragment);/// Here how to get the fragment id in R.id.frag1 of viewpager
}
public void switchContent(int id, Fragment fragment) {
    if (mContext == null)
        return;
    if (mContext instanceof MainActivity) {
        MainActivity mainActivity = (MainActivity) mContext;
        Fragment frag = fragment;
        mainActivity.switchContent(id, frag);
    }

}

在MainActivity中我创建了这个方法:

 public void switchContent(int id, Fragment fragment) {
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.replace(id, fragment, fragment.toString());
    ft.addToBackStack(null);
    ft.commit();
}

我已关注此链接how to open a different fragment on recyclerview OnClick

1 个答案:

答案 0 :(得分:0)

单击recyclelerview项时,可以使用界面回调来执行此操作:

你可以这样做:

class NavdrawerRecyclerAdapter extends RecyclerView.Adapter<> {

private OnFragmentInteractionListener mListener;

public NavdrawerRecyclerAdapter(OnFragmentInteractionListener listener){
mListner = listner;
}

//call and pass position inside onClick
public void onRecyclerItemClicked(int pos){
mListener.openFragment(pos);
}


public interface OnFragmentInteractionListener{
public void openFragment(int pos);
}}

现在你的主要活动有tablayouts实现这个界面。

public class MainActivity extends AppCompatActivity implements NavdrawerRecyclerAdapter.OnFragmentInteractionListener{

NavdrawerRecyclerAdapter adapter = new NavdrawerRecyclerAdapter(this);

@override
openFragment(int position){
TabLayout.Tab tab = tabLayout.getTabAt(position);
tab.select();
}
}

尝试并告诉我这是否有效。