2016-12-01 97 views
0

我是Android新手。我有一个导航抽屉,我在这里为物品使用了recyclerview。我有三个选项卡,代表viewpager中的三个片段。我的问题是,我无法通过点击回收查看项目打开一个片段。另一个问题是我尝试了FragmentTransaction,但不知道如何获取片段ID。请帮我解决它。你可以给我任何教程链接。如何点击recyclerview项目时打开viewpager片段

这里是我的代码...

在我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

+0

请发布你试图打开片段? – Nisarg

回答

0

您可以使用interface callbac K A recyclerview项被点击时:

你可以这样做:

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); 
}} 

现在你mainactivity具有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(); 
} 
} 

试试吧,告诉我它是否有效。

+0

它不起作用。它不会在应用程序中进行任何更改。点击不起作用 – Fatema

+0

其中onClick不工作recyclerview的onClick – pawar

+0

它的onRecyclerItemClicked – Fatema

相关问题