简体   繁体   中英

How can I open a new activity when I click on a view pager item?

I am trying to create an image slider with onClickListener using viewpager2. I have created 6 image sliders using viewpager2. I also created 6 different Activity for those sliders. How can I assign those Activity to their respective sliders, so that when someone click on any specific image slider it will open that assigned Activity. Please help...

Here is my code-

CampaignCarouselAdapter.java

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.squareup.picasso.Picasso;

import java.util.ArrayList;
import java.util.List;

public class CampaignCarouselAdapter extends RecyclerView.Adapter<CampaignCarouselAdapter.CampaignCarouselViewHolder> {

    ArrayList<CampaignItem> mList;
    Context context;

    public CampaignCarouselAdapter(Context context, ArrayList<CampaignItem> mList) {
        this.mList = mList;
        this.context = context;
    }

    @NonNull
    @Override
    public CampaignCarouselViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new CampaignCarouselViewHolder(
                LayoutInflater.from(parent.getContext()).inflate(R.layout.item_container_campaign,parent,false)
        );
    }

    @Override
    public void onBindViewHolder(@NonNull CampaignCarouselViewHolder holder, int position) {

        CampaignItem currentItem = mList.get(position);
        String imageUrl = currentItem.getImageUrl();
        Picasso.get().load(imageUrl).resize(1920,1080).centerCrop().into(holder.image);

    }

    @Override
    public int getItemCount() {
        return mList.size();
    }

    static class CampaignCarouselViewHolder extends RecyclerView.ViewHolder {

        private ImageView image;

        CampaignCarouselViewHolder(@NonNull View itemView) {
            super(itemView);
            image = itemView.findViewById(R.id.campaign_image);
        }
    }
}

MainActivity.java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

/*Carousel Starts*/

        FirebaseDatabase db = FirebaseDatabase.getInstance();
        DatabaseReference root = db.getReference().child("campaign");
        CampaignCarouselAdapter adapter;
        ArrayList<CampaignItem> list;

        list = new ArrayList<>();
        adapter = new CampaignCarouselAdapter(this, list);


        ViewPager2 campaignViewPager = findViewById(R.id.campaign_viewPager);

        //Get Data from FireBase Database
        root.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {

                list.clear();

                for (DataSnapshot dataSnapshot : snapshot.getChildren()){
                    CampaignItem campaignItem = dataSnapshot.getValue(CampaignItem.class);
                    list.add(campaignItem);
                }
                campaignViewPager.setAdapter(adapter);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });


        campaignViewPager.setClipToPadding(false);
        campaignViewPager.setClipChildren(false);
        campaignViewPager.setOffscreenPageLimit(3);
        campaignViewPager.getChildAt(0).setOverScrollMode(RecyclerView.OVER_SCROLL_NEVER);

        CompositePageTransformer compositePageTransformer = new CompositePageTransformer();
        compositePageTransformer.addTransformer(new MarginPageTransformer(40));
        compositePageTransformer.addTransformer(new ViewPager2.PageTransformer() {
            @Override
            public void transformPage(@NonNull View page, float position) {
                float r = 1 - Math.abs(position);
                page.setScaleY(0.95f + r * 0.05f);
            }
        });

        campaignViewPager.setPageTransformer(compositePageTransformer);
        /*Carousel Ends*/
    }
}

It seem you can setOnclickListener in onCreateViewHolder,i suggest using eventbus to communicate with tow components

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM