Skip to content Skip to sidebar Skip to footer

Passing A Fragment In The Constructor Of An Adapter

Since the onClick event is never triggered on a ViewPager (see this question), I'm going to set the onClickListener to the item container in the adapter. The idea is, when an item

Solution 1:

Check my below code with Change of ItemClick.

classMyAdapterextendsPagerAdapter {

   private MyObject[] mItemArray;
   private Context mContext;

publicSejoursWidgetAdapter(Context context, MyObject[] itemArray) {
    mContext = context;
    mItemArray = itemArray;
}

@Overridepublic Object instantiateItem(View collection, int position) {

    LayoutInflaterinflater= (LayoutInflater) collection.getContext()
    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    Viewrow= inflater.inflate(R.layout.item, null);      
     row .setTag(position);
    // Add click listener here because setting it directly on the ViewPager does not work (onClick not triggered)       
    row.setOnClickListener(newOnClickListener() {
        @OverridepublicvoidonClick(View v) {
            // How can I call MyFragment's onViewPagerClick() ?int position=(Integer) v.getTag();
     Log.v("Log_tag", "Here image is clicked"+ position);
        //now you known which Page is click you can do what you want.
        }
    }); 

    ((ViewPager) collection).addView(row);        


    return row;
}

/* More stuff */

 }

Solution 2:

you can also get the position of current page from your mViewPager by

int position = mViewPager.getCurrentItem();

instead of

int position=(Integer) v.getTag();

Post a Comment for "Passing A Fragment In The Constructor Of An Adapter"