2015-01-11 16 views
2

두 개의 탭이 있습니다. 첫 번째는 RecyclerView이고 두 번째는 ViewPager입니다. RecyclerView의 첫 번째 항목에는 간단한 설명이 있으며 ViewPager의 첫 번째 페이지에는 설명이 짧지 만 자세하게 나와 있지 않은 동일한 내용 만 있습니다. 두 번째 항목과 세 번째 항목 등으로 동일합니다.RecyclerView와 SwipeView 사이의 연결?

제 질문은 RecyclerView의 항목을 클릭 할 수 있고 ViewPager의 동일한 항목으로 전환하는보기일까요?

ViewPager 어댑터

public class ViewPagerAdapter extends PagerAdapter { 
    // Declare Variables 
    Context context; 
    String[] rezeptTitel; 
    String[] kcal; 
    String[] zubereitung; 
    int[] rezeptImages; 
    LayoutInflater inflater; 

    public ViewPagerAdapter(Context context, String[] rezeptTitel, String[] kcal,zubereitung, int[] rezeptImages) { 
     this.context = context; 
     this.rezeptTitel = rezeptTitel; 

     this.kcal = kcal; 
     this.zubereitung = zubereitung; 
     this.rezeptImages = rezeptImages; 
    } 

    @Override 
    public int getCount() { 
     return rezeptTitel.length; 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view == ((LinearLayout) object); 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 

     // Declare Variables 
     TextView txtrezeptTitel; 

     TextView txtkcal; 
     TextView txtzubereitung; 
     ImageView imagerezept; 

     inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View itemView = inflater.inflate(R.layout.rezepte_fragment_swipeview, container, 
       false); 

     // Locate the TextViews in viewpager_item.xml 
     txtrezeptTitel = (TextView) itemView.findViewById(R.id.rezeptTitel); 
     txtkcal = (TextView) itemView.findViewById(R.id.kcal); 
     txtzubereitung = (TextView) itemView.findViewById(R.id.zubereitung); 

     // Capture position and set to the TextViews 
     txtrezeptTitel.setText(rezeptTitel[position]); 
     txtkcal.setText(kcal[position]); 
     txtzubereitung.setText(zubereitung[position]); 

     // Locate the ImageView in viewpager_item.xml 
     imagerezept = (ImageView) itemView.findViewById(R.id.image_rezepte_basic); 
     // Capture position and set to the ImageView 
     imagerezept.setImageResource(rezeptImages[position]); 

     // Add viewpager_item.xml to ViewPager 
     ((ViewPager) container).addView(itemView); 

     return itemView; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     // Remove viewpager_item.xml from ViewPager 
     ((ViewPager) container).removeView((RelativeLayout) object); 

    } 

내 RecyclerView 어댑터

public class RezepteAdapter extends RecyclerView.Adapter<RezepteAdapter.MyViewHolder> { 

    private LayoutInflater inflater; 
    List<Information> data = Collections.emptyList(); 

    public RezepteAdapter(Context context, List<Information> data) { 
     inflater = LayoutInflater.from(context); 
     this.data = data; 
    } 

    @Override 
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = inflater.inflate(R.layout.ernaehrungsplan_custom_row, parent, false); 
     MyViewHolder holder = new MyViewHolder(view); 
     return holder; 
    } 

    @Override 
    public void onBindViewHolder(MyViewHolder holder, int position) { 
     Information current = data.get(position); 
     holder.title.setText(current.title); 


    } 
    @Override 
    public int getItemCount() { 
     return data.size(); 
    } 
    class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 
     TextView title; 
     ImageView icon; 

     public MyViewHolder(View itemView) { 
      super(itemView); 
      title = (TextView) itemView.findViewById(R.id.listText3); 
      icon = (ImageView) itemView.findViewById(R.id.listIcon3); 
      icon.setOnClickListener(this); 
     } 

     @Override 
     public void onClick(View v) { 
      Context context = itemView.getContext(); 
      Intent intent = new Intent(context, Ernaehrung.class); 
      context.startActivity(intent); 

     } 
    } 

답변

0

전화하여 RecyclerView의 방법 addOnItemTouchListener. 이 이벤트는 클릭 한 항목의 위치를 ​​알려줍니다. 그런 다음 호출기를 해당 위치로 이동하려면 ViewPager에서 setCurrentItem으로 전화하십시오.

+0

예를 들어 주시겠습니까? 'addOnItemTouchListener'로 무엇을 해야할지를 찾을 수 없습니다. – sergejdeveloper

+0

그러나 필자는 viewPager 어댑터가 recylerview 어댑터와 다른 조각에 있지만 비슷한 상황이 발생합니다. 어떻게하면 recyclerview 어댑터에서 viewPager 어댑터에 액세스 할 수 있습니까? http://stackoverflow.com/q/32751281/2990066 – ShahNewazKhan