在适配器中添加意图



我有一个recyelerView Adapter,它有几个视图(4(,当我在其中一个视图上添加setOnclickListener时,会出现此错误Attempt to invoke virtual method 'void android.content.Context.startActivity(android.content.Intent)' on a null object reference,我使用了Context,但它也不起作用。所以我不知道该怎么做。

这是我的代码适配器

public class HomeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context Context;
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
/* I want add onClick in this view */
} else if (viewType == R.id.image_home_liveImage) {
return new LiveViewHolder(
LayoutInflater.from(parent.getContext()).inflate(
R.layout.item_home_container_live,
parent,
false
),
Context);
} else throw new IllegalArgumentException("unknown view type");
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
} else if (getItemViewType(position) == R.id.image_home_liveImage) {
LiveModel liveModel = items.getLive().get(position - items.getFirstImage().size());
((LiveViewHolder) holder).setLiveImageData(liveModel);
((LiveViewHolder) holder).setOnClick(liveModel);
}
}
/* and here's the adapter for the view that i want to add on it */
/* Live Adapter */
static class LiveViewHolder extends RecyclerView.ViewHolder {
private final ImageView liveImage;
private final Context context;
LiveViewHolder(@NonNull View itemView, Context context) {
super(itemView);
liveImage = itemView.findViewById(R.id.image_home_liveImage);
this.context = context;
}
void setLiveImageData(LiveModel liveModel) {
Glide.with(itemView.getContext())
.load(liveModel.getImageLiveInfoUrl())
.into(liveImage);
}
void setOnClick(LiveModel liveModel) {
liveImage.setOnClickListener(v -> {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(liveModel.getLiveUrl()));
context.startActivity(intent);
});
}
}

tuyu5u56u65 76u

不要使用上下文,而是使用itemView.getContext

你的onClick方法应该看起来像这个

void setOnClick(LiveModel liveModel) {
itemView.setOnClickListener(v -> {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(liveModel.getLiveUrl()));
itemView.getContext().startActivity(intent);
});
}
}

最新更新