2016-12-01 1 views
0

나는 android에서 새롭다. 나는 품목에 대해 recyclerview를 사용한 탐색 서랍을 가지고 있습니다. 뷰 페이지에 세 개의 조각을 나타내는 세 개의 탭이 있습니다. 내 문제는 내가 recycler보기 항목을 클릭하여 조각을 열 수 없다는 것입니다. 또 다른 문제는 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에서 나는이 방법을 만들었습니다 : 내 recyclerview 어댑터에서 여기

내 코드는

...

은 내가 시도 내가 따랐다

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

인터페이스 callbac을 사용하여이 작업을 수행 할 수 있습니다. recyclerview 항목을 클릭하면 케이 : 당신은이 작업을 수행 할 수

:이 인터페이스를 구현 tablayouts이

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

시도해보고이 기능이 작동하는지 알려주세요.

+0

작동하지 않습니다. 앱에서 변경하지 않습니다. 클릭이 작동하지 않음 – Fatema

+0

onClick이 작동하지 않습니다. recyclerview의 onClick – pawar

+0

은 onRecyclerItemClicked입니다. – Fatema

관련 문제