user4336509
user4336509

Reputation:

Start Activity in Adapter

I have Start Activity in Adapter class, I use this code but dose not work. I use Recycler View instead of list view.

How to correct this code?

public class CardViewDataAdapter_smiley extends RecyclerView.Adapter<CardViewDataAdapter_smiley.ViewHolder> {
public String[] mDataset;
static public Context context;
public CardViewDataAdapter_smiley(String[] myDataset) {
    mDataset = myDataset;
}
public CardViewDataAdapter_smiley(Context context) {
    this.context = context;
}
@Override
public CardViewDataAdapter_smiley.ViewHolder onCreateViewHolder(ViewGroup parent,
                                                                int viewType) {
          View itemLayoutView = LayoutInflater.from(parent.getContext()).inflate(
            R.layout.cardview_smiley, null);
    ViewHolder viewHolder = new ViewHolder(itemLayoutView);
    return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
    viewHolder.tvtinfo_text.setText(mDataset[position].toString());
    viewHolder.versionName = mDataset[position];
}
@Override
public int getItemCount() {
    return mDataset.length;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
    public TextView tvtinfo_text;
    public String versionName;
    public ViewHolder(View itemLayoutView) {
        super(itemLayoutView);
        tvtinfo_text = (TextView) itemLayoutView
                .findViewById(R.id.cardview_title_smiley);
        itemLayoutView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(context,SMS_Smiley.class);
                context.startActivity(intent);
            }
        });
        itemLayoutView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                Toast.makeText(v.getContext(), test text" + versionName,
                        Toast.LENGTH_SHORT).show();
                return true;
            }
        });
    }
}}

Upvotes: 1

Views: 2959

Answers (1)

ρяσѕρєя K
ρяσѕρєя K

Reputation: 132982

Probably context is null :

Use single constructor to pass String Array and Context :

public CardViewDataAdapter_smiley(String[] myDataset,Context context) {
            this.mDataset = myDataset;
             this.context = context;
  }

OR

with-out passing Context in constructor use v.getContext() to start Activity on Click:

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

Upvotes: 5

Related Questions