mardi 5 mai 2015

Passing data from GridView to ViewPager

GridView contains category, and when I do tap on any of the GridView item i would like to show items those belongs to that particular Category only in ViewPager.

ISSUE

Still showing all the items in a ViewPager, no matter which category that belongs to !

gridView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                    long id) {

                String categoryName = menusArrayList.get(position).getName().toString();
                Log.d("categoryName:", categoryName);

                // Pass results to ViewPagerAdapter Class
                adapter = new ViewPagerAdapter(MenusActivity.this, R.layout.adapter_viewpager, itemsArrayList);
                // Binds the Adapter to the ViewPager
                viewPager.setAdapter(adapter);
            }
        });

ViewPagerAdapter.java:

public class ViewPagerAdapter extends PagerAdapter {

    ArrayList<Items> itemsList;
    LayoutInflater layoutInflater;
    int Resource;
    ViewHolder holder;
    Context context;

    public ViewPagerAdapter(Context context, int resource, ArrayList<Items> itemsArrayList) {
        this.layoutInflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        this.Resource = resource;
        this.itemsList = itemsArrayList;
        this.context = context;
    }

    @Override
    public int getCount() {
        return itemsList.size();
    }

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

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

        TextView textTitle;
        ImageView imageViewPager;

        layoutInflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View itemView = layoutInflater.inflate(R.layout.adapter_viewpager, container, false);

        textTitle = (TextView) itemView.findViewById(R.id.textTitle);

        textTitle.setText(itemsList.get(position).getTitle());


        imageViewPager = (ImageView) itemView.findViewById(R.id.imageView);

        Picasso.with(context)
        .load(itemsList.get(position).getImage())
        .into(imageViewPager);

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

    }
}

EDITED:

public ViewPagerAdapter(Context context, int resource, ArrayList<Items> itemsArrayList, String name) { ...}

and

adapter = new ViewPagerAdapter(MenusActivity.this, R.layout.adapter_viewpager, itemsArrayList, categoryName);

Aucun commentaire:

Enregistrer un commentaire