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\'
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();
}
}
}
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.
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
.
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);