无法在 recyclerview Android 中启动新的 activity onItemClick

Unable to start new activity onItemClick in recyclerview Android

我有一个使用 viewmodel 查看项目的 recyclerview。但是当我单击该项目时,它不是 clicking/starting 新的 activity。

适配器class:

public class MovieAdapter extends RecyclerView.Adapter<MovieAdapter.ViewHolder> {
    private ArrayList<Search> arrayList;
    private Context context;
    private LayoutInflater layoutInflater;
    private MovieAdapterListener listener;

    public MovieAdapter(ArrayList<Search> arrayList, Context context) {
        this.context = context;
        this.arrayList = arrayList;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        if (layoutInflater==null){
            layoutInflater=LayoutInflater.from(parent.getContext());
        }
        MyListBinding myListBinding= DataBindingUtil.inflate(layoutInflater, R.layout.mylist,parent,false);
        return new ViewHolder(myListBinding);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
        Search myListViewModel=movieListFiltered.get(position);
        holder.bind(myListViewModel);
    }

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

    class ViewHolder extends RecyclerView.ViewHolder{
        private MyListBinding myListBinding;
        public ViewHolder(@NonNull MyListBinding myListBinding) {
            super(myListBinding.getRoot());
            this.myListBinding=myListBinding;
        }
        public void bind(Search myli){
            this.myListBinding.setMylistmodel(myli);
            myListBinding.executePendingBindings();
        }
        public MyListBinding getMyListBinding(){
            return myListBinding;
        }
    }

    public interface MovieAdapterListener {
        void onMovieSelected(Search movieSearch);
    }
}

然后我在MainActivity下面创建

@Override
    public void onMovieSelected(Search movie) {

        Toast.makeText(getApplicationContext(), movie.Title, Toast.LENGTH_LONG).show();

        Intent intent = new Intent(this, MovieDetailsActivity.class);
        intent.putExtra("IMDB_ID", movie.Title);
        startActivity(intent);
    }

当我点击该项目时没有任何反应。有人可以帮助我吗?

最好在您的 ViewHolder class 上实现 OnClickListener 并将侦听器添加到您想要的视图。

只需在 onBindViewHolder(...) 中添加 setOnClickListener(...),如下所示:

@Override
public void onBindViewHolder(ViewHolder holder, final int position) {

//... 

holder.itemView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(getApplicationContext(), movie.Title, Toast.LENGTH_LONG).show();

    Intent intent = new Intent(this, MovieDetailsActivity.class);
    intent.putExtra("IMDB_ID", movie.Title);
    startActivity(intent);
    }
});}