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

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

我有一个recyclerview,它使用viewmodel查看项目。但是,当我单击该项目时,它并不是在单击/启动新活动。

适配器类:

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

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

android android-recyclerview recycler-adapter android-viewmodel
1个回答
1
投票

最好在ViewHolder类上实现OnClickListener并将侦听器添加到所需的视图。

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