如何使用categoryid打开活动

问题描述 投票:-1回答:1

我想用RecyclerView创建一个电影应用程序。这个应用程序主要包括3个活动在第一活动电影类别例如:惊悚片,戏剧片......和第二活动电影图像和电影名称例如:海报或屏幕截图,关于第三活动的电影细节。我打算在这个应用程序中包含100多部电影。我想知道如何通过点击第一个活动上的相同电影类别打开电影的第二/海报活动页面,并通过在第二个活动上粘贴相同的电影图像来打开详细活动。请帮我...

这是我的第一个活动

RecyclerView mRecyclerView;
FirebaseDatabase mFirebaseDatabase;
DatabaseReference mRef;


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

    //Actionbar
    Toolbar toolbar = findViewById(R.id.MoviesMain_Toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setTitle("Movie");
    //set title

    //RecyclerView
    mRecyclerView = findViewById(R.id.Movies_recyclerView);
    mRecyclerView.setHasFixedSize(true);

    //set layout as LinearLayout
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this) );

    //send Query to FirebaseDatabase
    mFirebaseDatabase = FirebaseDatabase.getInstance();
    mRef = mFirebaseDatabase.getReference("Movie");
}

//load data into recycler view onStart
@Override
protected void onStart() {
    super.onStart();
    FirebaseRecyclerAdapter<MoviesModel, MoviesViewHolder> firebaseRecyclerAdapter =
            new FirebaseRecyclerAdapter<MoviesModel, MoviesViewHolder>(
                    MoviesModel.class,
                    R.layout.moviesmainitems,
                    MoviesViewHolder.class,
                    mRef
            ) {
                @Override
                protected void populateViewHolder(MoviesViewHolder viewHolder, MoviesModel model, int position) {
                    viewHolder.setDetails(getApplicationContext(), model.getTitle(), model.getImage());
                }
            };

    //set adapter to recyclerview
    mRecyclerView.setAdapter(firebaseRecyclerAdapter);
}    

这是我的第一个模型

 String image, title;

//constructor
public MoviesModel(){}

//getter and setters press Alt+Insert


public String getImage() {
    return image;
}

public void setImage(String image) {
    this.image = image;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;

}

这是我的第一个ViewHolder

View mView;

public MoviesViewHolder(View itemView) {
    super(itemView);

    mView = itemView;

    //item click
    itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mClickListener.onItemClick(view, getAdapterPosition());
        }
    });
    //item long click
    itemView.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View view) {
            mClickListener.onItemLongClick(view, getAdapterPosition());
            return true;
        }
    });

}

//set details to recycler view moviesmainitems
public void setDetails(Context ctx, String title, String image){
    //Views

    TextView mDetailTv = mView.findViewById(R.id.rTitleTv);
    ImageView mImageIv = mView.findViewById(R.id.rImageView);

    //set data to views

    mDetailTv.setText(title);
    Picasso.get().load(image).into(mImageIv);

}

private MoviesViewHolder.ClickListener mClickListener;

//interface to send callbacks
public interface ClickListener{
    void onItemClick(View view, int position);
    void onItemLongClick(View  view, int position);
}

public void setOnClickListener(MoviesViewHolder.ClickListener clickListener){
    mClickListener = clickListener;
}

这是我的第二项活动

RecyclerView mRecyclerView;
FirebaseDatabase mFirebaseDatabase;
DatabaseReference mRef;


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

    //Actionbar
    Toolbar toolbar = findViewById(R.id.MoviesSecond_Toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setTitle("Movie");
    //set title

    //RecyclerView
    mRecyclerView = findViewById(R.id.MoviesSecond_recyclerView);
    mRecyclerView.setHasFixedSize(true);

    //set layout as LinearLayout
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this) );

    //send Query to FirebaseDatabase
    mFirebaseDatabase = FirebaseDatabase.getInstance();
    mRef = mFirebaseDatabase.getReference("Movie");
}

//load data into recycler view onStart
@Override
protected void onStart() {
    super.onStart();
    FirebaseRecyclerAdapter<MoviesSecondModel, MoviesSecondViewHolder> firebaseRecyclerAdapter =
            new FirebaseRecyclerAdapter<MoviesSecondModel, MoviesSecondViewHolder>(
                    MoviesModel.class,
                    R.layout.moviesseconditems,
                    MoviesSecondViewHolder.class,
                    mRef
            ) {
                @Override
                protected void populateViewHolder(MoviesSecondViewHolder viewHolder, MoviesSecondModel model, int position) {
                    viewHolder.setDetails(getApplicationContext(), model.getTitle(), model.getImage());
                }
            };

    //set adapter to recyclerview
    mRecyclerView.setAdapter(firebaseRecyclerAdapter);
}
java android android-recyclerview
1个回答
0
投票

如果你想保持你的结构3活动,最好的方法是在你的Listener中添加Adapter,类似的东西:

public class MoveiAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{

    private OnInteractionListener mListener;

    public MoveiAdapter(OnInteractionListener listener) {
            mListener = listener;

        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
            holder.itemView.setOnClickListener(v -> {
                    if (mListener != null) {
                        mListener.onFooterClick();
                    }
                });
        }
    }

    public interface OnInteractionListener {

        void onItemClick(int position);

    }
}

并且你Activity将实现这个接口OnInteractionListener并且当onItemClick()被调用时你可以打开下一个Activity

只是一个建议,你只能使用一个Activity并使用Fragments

© www.soinside.com 2019 - 2024. All rights reserved.