当前位置: 首页 > 知识库问答 >
问题:

如何在recyclerView中获取项目位置

贺华容
2023-03-14

在recyclerView中获取已点击项目的位置,我在recyclerView中创建cardview和链接
我想获取位置,将开关盒设置为每个卡视图的意向活动

当我点击card view I时,他会打开另一个页面,当你点击card view 2时,他会打开另一个页面。

看看我的密码

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder>{

    private List<Movie> movieList;
    private ClickListener<Movie> clickListener;

    RecyclerViewAdapter(List<Movie> movieList){
        this.movieList = movieList;
    }

    @Override
    public RecyclerViewAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.movie_item_list,parent,false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(RecyclerViewAdapter.MyViewHolder holder, final int position) {

        final Movie movie = movieList.get(position);

        holder.title.setText(movie.getTitle());
        holder.image.setBackgroundResource(movie.getImage());

        holder.cardView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {                               
                clickListener.onItemClick(movie);

                switch (v.getContext()){
                    case position==0:

                        startActivity(new Intent(MainActivity.this, activity_one.class));
                        break;
                    case position==1:
                        startActivity(new Intent(MainActivity.this, activity_tow.class));
                        break;
                    case position==2:
                        startActivity(new Intent(MainActivity.this, activity_three.class));
                        break;
                       
                }






            }





        });





    }

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

    public void setOnItemClickListener(ClickListener<Movie> movieClickListener) {
        this.clickListener = movieClickListener;
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {

        private TextView title;
        private ImageView image;
        private CardView cardView;

        public MyViewHolder(View itemView) {
            super(itemView);
            title = itemView.findViewById(R.id.title_re);
            image = itemView.findViewById(R.id.image_re);
            cardView = itemView.findViewById(R.id.cardview1_id);
        }
    }
}

interface ClickListener<T> {
    void onItemClick(T data);
}

在recyclerView中获取已点击项目的位置,我在recyclerView中创建cardview和链接
我想获取位置,将开关盒设置为每个卡视图的意向活动

当我点击card view I时,他会打开另一个页面,当你点击card view 2时,他会打开另一个页面。

共有1个答案

冯新知
2023-03-14

不要使用位置。使用支架。改为getAdapterPosition()

另外,你的活动意图有一个拼写错误,这可能会让你有点困惑?

 类似资料:
  • 我必须滚动到recyclerview中的特定项目。 首先,我需要通过匹配从活动传递给适配器的字符串来获取项的位置。然后聚焦到该项目的位置。 例如,在适配器中有一个存储了EventID的TextView,我将把一个字符串从activity传递给适配器,使其与EventID匹配,然后获取该项目的位置,并将焦点/滚动设置到该特定位置。我在适配器中定义了一个方法来获取项的位置,但我不知道如何从活动中调用它

  • 在旧代码中,当我使用与自定义适配器时,我可以使用此代码获取项目。 现在我正在实现。如何从<代码>回收视图中获取项目。适配器?

  • 我目前正在开发一个应用程序,可以在用户手机上找到所有MP3,然后将它们放入列表中。这是非常好的工作,非常快,即使有很多歌曲。现在,我为列表中的每个项目填充一个新列表,然后将其显示在我的recyclerview中。问题是,我的手机上有700首歌曲,这在相当长的一段时间内会阻塞UI线程。 现在,我想使用回收站视图不将列表中的所有项目一次加载到对象中,而是仅在它们即将显示时加载-但我不知道如何做到这一点

  • 问题内容: 如何获得当前Eclipse项目的名称?我在GMF视图中,使用弹出菜单ist的某些子菜单时需要项目名称。 问题答案: 这GMF类有一个直截了当的回答,如果你有机会到ResourcesPlugin名称: 通用答案(来自可能过时的代码)可能类似于(如果您打开了编辑器): 如果没有打开编辑器:

  • 公共类DbHelper扩展了SQLiteOpenHelper{ }