Java 如何使用categoryid打开活动
我想用RecyclerView创建一个电影应用程序。此应用程序主要包括3项活动。关于第一类活动电影,如:惊悚片、戏剧。。第二个活动的电影图片和电影名称,例如:海报或截图,第三个活动的电影细节。我计划在这个应用程序中包括100部电影。我想知道如何通过单击第一个活动中的同一电影类别打开电影的第二个/海报活动页面,并通过在第二个活动中点击同一电影图像打开详细活动。请帮帮我 这是我的第一个活动Java 如何使用categoryid打开活动,java,android,android-recyclerview,Java,Android,Android Recyclerview,我想用RecyclerView创建一个电影应用程序。此应用程序主要包括3项活动。关于第一类活动电影,如:惊悚片、戏剧。。第二个活动的电影图片和电影名称,例如:海报或截图,第三个活动的电影细节。我计划在这个应用程序中包括100部电影。我想知道如何通过单击第一个活动中的同一电影类别打开电影的第二个/海报活动页面,并通过在第二个活动中点击同一电影图像打开详细活动。请帮帮我 这是我的第一个活动 RecyclerView mRecyclerView; FirebaseDatabase mFirebaseD
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);
}
这是我的第一个取景器
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);
}
RecyclerView-mRecyclerView;
FirebaseDatabase mFirebaseDatabase;
数据库参考mRef;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_moviessecond);
//操作栏
工具栏工具栏=findViewById(R.id.MoviesSecond_工具栏);
设置支持操作栏(工具栏);
getSupportActionBar().setTitle(“电影”);
//定名
//回收视图
mRecyclerView=findViewById(R.id.moviessond\u recyclerView);
mRecyclerView.setHasFixedSize(true);
//将布局设置为线性布局
mRecyclerView.setLayoutManager(新的LinearLayoutManager(this));
//将查询发送到FirebaseDatabase
mFirebaseDatabase=FirebaseDatabase.getInstance();
mRef=mFirebaseDatabase.getReference(“电影”);
}
//启动时将数据加载到回收器视图
@凌驾
受保护的void onStart(){
super.onStart();
FirebaseRecyclerAdapter FirebaseRecyclerAdapter=
新型FirebaseRecyclerAdapter(
MoviesModel.class,
R.layout.movies第二项,
MoviesSecondViewHolder.class,
mRef
) {
@凌驾
受保护的void populateViewHolder(MoviesSecondViewHolder视图持有人,MoviesSecondModel模型,int位置){
setDetails(getApplicationContext(),model.getTitle(),model.getImage());
}
};
//将适配器设置为recyclerview
mRecyclerView.setAdapter(firebaseRecyclerAdapter);
}
如果您想让您的结构包含3个活动,最好的方法是在适配器中添加侦听器
,类似于:
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);
}
}
public类MoveiAdapter扩展了RecyclerView.Adapter{
私有的OnInteractionListener-MLListener;
public MoveiAdapter(OnInteractionListener侦听器){
mListener=监听器;
@凌驾
BindViewHolder上的公共无效(RecyclerView.ViewHolder,int位置){
holder.itemView.setOnClickListener(v->{
if(mListener!=null){
mListener.onFooterClick();
}
});
}
}
InteractionListener的公共接口{
无效单击(内部位置);
}
}
您将在InteractionListener上实现此接口,当调用onItemClick()
时,您可以打开下一个活动
只是一个建议,您只能使用一个活动
并使用片段
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);
}
}