Start new Activity with onClick() in RecyclerView

后端 未结 10 735
渐次进展
渐次进展 2020-12-03 06:12

I want to go into a new Activity with the onClick() method but my code is not working. Can you please offer some advice. I have some issues with the recyclerView, since it\'

相关标签:
10条回答
  • 2020-12-03 06:29

    Try this

     public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener    
     {
        public TextView tv_brandName,tv_priceValue;
        ImageView iv_item;
        RelativeLayout rl_share;
        public MyViewHolder(View view) 
        {
            super(view);
            tv_brandName=(TextView)view.findViewById(R.id.tv_brandName);
            tv_priceValue=(TextView)view.findViewById(R.id.tv_priceValue);
            iv_item=(ImageView)view.findViewById(R.id.iv_item);
            rl_share=(RelativeLayout)view.findViewById(R.id.rl_share);
            rl_share.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v)
                 {
                  Context context = v.getContext();
                    Intent intent = new Intent(context, Share.class);
                    context.startActivity(intent);
                }
            });
            context=view.getContext();
    
        }
     }
    

    }

    0 讨论(0)
  • 2020-12-03 06:36

    Try this

    public class FragmentOne extends Fragment {
    
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            RecyclerView recyclerView = (RecyclerView) inflater.inflate(
                    R.layout.recycleview, container, false);
            ContentAdapter adapter = new ContentAdapter();
            recyclerView.setAdapter(adapter);
    
            recyclerView.setHasFixedSize(true);
            recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
            return recyclerView;
        }
    
        public class ContentAdapter extends RecyclerView.Adapter<ContentAdapter.ViewHolder> implements View.OnClickListener {
            private static final int LENGTH = 50;
    
            public ContentAdapter() {
            }
    
            public class ViewHolder extends RecyclerView.ViewHolder {
    
                public ViewHolder(LayoutInflater inflater, ViewGroup parent) {
                    super(inflater.inflate(R.layout.fragment_channel, parent, false));
                }
            }
    
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(), ChannelDetailActivity.class);
                startActivity(intent);
            }
    
            @Override
            public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    
                ViewHolder viewHolder = new ViewHolder(LayoutInflater.from(parent.getContext()), parent);
                return viewHolder;
            }
    
            @Override
            public void onBindViewHolder(ViewHolder holder, int position) {
            }
    
            @Override
            public int getItemCount() {
                return LENGTH;
            }
        }
    }
    

    The adapter now implements the onclick and not the viewholder.

    0 讨论(0)
  • 2020-12-03 06:41

    Just change getContext() to v.getContext() like this:

            @Override
            public void onClick(View v) {
               v.getContext().startActivity(new Intent(v.getContext(), ChannelDetailActivity.class));
    
            }
    

    And make your ViewHolder class an inner class of your ContentAdapter class.

    0 讨论(0)
  • 2020-12-03 06:41

    you have to create constructor of FragmentOne like this

    Activity activity;
    FragmentOne(Acticity activity){ 
         this.activity = activity;
    }
    

    After that start activity with the reference of that activity like this

    activity.startActivity(intent);

    0 讨论(0)
提交回复
热议问题