【问题标题】:How to open a new activity depending on the recyclerview item clicked?如何根据点击的recyclerview项目打开一个新活动?
【发布时间】:2018-06-15 13:41:33
【问题描述】:

如何根据从回收站视图列表中单击的某个项目打开新活动?

例如,如果我单击列表 1,那么它将转到活动 1;如果我单击列表 2,它将转到活动 2。

现在,每次我点击列表中的一个项目时,它都会进入同一个活动。

这是我的代码:

@Override
protected void onStart() {
    super.onStart();
    FirebaseRecyclerAdapter<Model, ViewHolder> firebaseRecyclerAdapter =
            new FirebaseRecyclerAdapter<Model, ViewHolder>(
                    Model.class,
                    R.layout.row,
                    ViewHolder.class,
                    mDbRef
            ) {

                @Override
                protected void populateViewHolder(ViewHolder viewHolder, Model model, int position) {
                    viewHolder.setDetails(getApplicationContext(), model.getTitle(), model.getDescription(), model.getImage());

                    viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            startActivity(new Intent(view.getContext(), Activity2.class));

【问题讨论】:

    标签: android android-recyclerview onclicklistener


    【解决方案1】:

    在你的 onClickListener 中做这样的事情:

    public void onClick(View view) {
       int pos = getAdapterPosition());
       if (pos == 1)
          startActivity(new Intent(view.getContext(), Activity1.class));
       if (pos == 2)
          startActivity(new Intent(view.getContext(), Activity2.class));
    }
    

    【讨论】:

    • 嗨,当我写 getAdapterPostion 时出现错误,你知道为什么吗?对不起,我真的是一个初学者
    • viewHolder.getAdapterPosition()
    • 谢谢,它有帮助。如果可以,我会问更多问题
    【解决方案2】:

    IMO,最好的方法是让 viewholder 的实例提供支持它的任何数据。支持它的数据在适配器的 onBindViewHolder() 方法中设置。

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    
    
        final View view = LayoutInflater.from(mContext)
                                        .inflate(R.layout.li_filter_item, parent, false);
    
        final MyViewHolder viewHolder = new MyViewHolder(view);
    
    
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (myRecyclerViewListener != null) {
                    myRecyclerViewListener.onClick(viewHolder.getData);
                }
            }
        });
        return viewHolder;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      • 1970-01-01
      • 1970-01-01
      • 2019-08-24
      • 2017-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多