【问题标题】:How to open a viewpager fragment when a recyclerview item is clicked单击recyclerview项目时如何打开viewpager片段
【发布时间】:2016-12-01 18:17:59
【问题描述】:

我是安卓新手。我有一个导航抽屉,我在其中使用了 recyclerview 项目。我有三个选项卡,代表视图页面中的三个片段。我的问题是我无法通过单击回收站视图项打开片段。另一个问题是我尝试了 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

【问题讨论】:

  • 请发布您尝试打开片段的内容?

标签: android android-fragments android-viewpager


【解决方案1】:

你可以在点击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 实现了这个接口。

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

试试看,告诉我这是否有效。

【讨论】:

  • 它不起作用。它不会在应用程序中进行任何更改。点击无效
  • 哪个 onClick 不工作 recyclerview 的 onClick
  • 它是 onRecyclerItemClicked
  • 我的意思是该项目不能被点击。
  • 好的,所以做一件事,您可以在回收器视图的适配器中添加 onclick 侦听器(即在 textviews 或您单击的任何项目上)。 Recycler 视图具有 Item Touch Listener,您可以使用它。告诉我这是否有帮助。
猜你喜欢
  • 2021-04-11
  • 1970-01-01
  • 2018-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多