来自recylerviewAdapter

时间:2015-09-23 23:54:13

标签: android android-fragments

我有一个父活动(NavigationActivity),它有一个包含四个片段(frag1,frag2,frag3,frag4)的viewPager。

然后frag2有一个带有3个片段的嵌套ViewPager(nestedFrag1,nestedFrag2,nestedFrag3)。

nestedFrag1有一个recylerview,可以加载带有图像的卡片,图像上有一个onCLickListerner。

@Override
public void onBindViewHolder(final ViewHolder viewHolder, int i) {
    Poi_MDL poi = poiItems.get(i);

    viewHolder.poiTitle.setText(poi.getTitle());
    viewHolder.numComments.setText("" + poi.getNumComments());
    viewHolder.numLikes.setText("" + poi.getNumLikes());

    ArrayList<String> images = poi.getPhotos();

    if( images.get(0) != null){
        Log.d("IMAGE URL", images.get(0));
        Picasso.with(context)
                .load(Constants.HOSTED_IMG_URL + images.get(0))
                .into(viewHolder.poiImg);
    }

    viewHolder.poiImg.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // This is where I want to call setCurrentItem for the nestedViewPager
            Log.d(LOG_TAG,"" + context.getClass());

            Snackbar.make(v, "" + viewHolder.getAdapterPosition() , Snackbar.LENGTH_SHORT).show();
        }
    });
}

单击图像时,我想在nestedViewPage上调用setCurrentItem。

如何通过recyclerview适配器实现此目的?

2 个答案:

答案 0 :(得分:1)

我认为这实际上取决于您的应用是什么以及您的课程有哪些责任...

我可以使用changePageForImage方法在frag2上实现类似ImageClickResolver的接口,然后将此引用发送到newstedViewPager-&gt; nestedFrag1-&gt; adapter。所以适配器有人可以根据图像来决定。或者只是使用Otto或事件总线,以便在发布图像时发出事件并让frag2听取它。

答案 1 :(得分:0)

我已经能够使用以下方法解决这个问题:

  • 在我的带有recyclerView(nestedFrag2)的嵌套片段中,我调用了getParentFragment()并将其实例化为nestedFrag1(包含viewPager)
    • 然后我在recylerView适配器中设置了一个接口,并在nestedFrag2中实现了接口,并在上面的onBindView监听器中使用了回调。