我已经整天尝试了,但是无法解决,请帮助我出口,我不知道那里到底是什么问题。我是android开发中的新手。这是我的android项目代码,如下:我不知道发生了什么,一旦有,请检查一下。非常感谢。
`公共类MyComicAdapter扩展了RecyclerView.Adapter
Context context;
List<Comic> comicList;
LayoutInflater inflater;
public MyComicAdapter(Context context, List<Comic> comicList) {
this.context = context;
this.comicList = comicList;
inflater=LayoutInflater.from(context);
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View itemView = inflater.inflate(R.layout.comic_item, viewGroup, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int i) {
Picasso.get().load(comicList.get(i).Image).into(myViewHolder.comic_image);
myViewHolder.comic_name.setText(comicList.get(i).Name);
//Event
myViewHolder.setRecyclerItemClickListener(new IRecyclerItemClickListener(){
@Override
public void onClick(View view, int position) {
//save the comic selected
Common.comicSelected = comicList.get(position);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(new Intent(context,ChapterActivity.class));
}
});
}
@Override
public int getItemCount() {
return comicList.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView comic_name;
ImageView comic_image;
IRecyclerItemClickListener recyclerItemClickListener;
public void setRecyclerItemClickListener(IRecyclerItemClickListener recyclerItemClickListener) {
this.recyclerItemClickListener = recyclerItemClickListener;
}
public MyViewHolder(@NonNull View itemView) {
super(itemView);
comic_image = itemView.findViewById(R.id.image_comic);
comic_name = itemView.findViewById(R.id.comic_name);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
recyclerItemClickListener.onClick(view, getAdapterPosition());
`
答案 0 :(得分:0)
尝试一下,
1.在适配器中创建一个界面,并将其传递给适配器(希望您知道如何制作和使用界面)。
2.将接口实现到您的活动类。
3.在其覆盖方法中,您将获得列表的位置。
4.通过使用该位置,获取所需的数据并在其中调用意图。
完成。
答案 1 :(得分:0)
问题是您执行两次“新意图”:
Intent intent = new Intent(Intent.ACTION_VIEW);
context.startActivity(new Intent(context,ChapterActivity.class))
FLAG_ACTIVITY_NEW_TASK。仅创建一次Intent的更正版本如下所示:
Intent intent = new Intent(context, ChapterActivity.class))
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
但是真正的问题是您需要在Activity上下文中调用startActivity。
getActivity().startActivity(new Intent(getActivity(), ChapterActivity.class));
更多讨论在这里: How do I start an activity from within a Fragment?
您尝试使用FLAG_ACTIVITY_NEW_TASK进行的操作应保留给极少数情况,例如当您需要从服务启动活动时。但是,从UI上下文中启动Activity时,不必或不需要设置该标志。
这就是警告提示的原因:
这真的是您想要的吗?
在启动“活动”时设置专门的标志通常会导致不必要的后退/导航行为。
此外,我看不到您的适配器是否位于“活动”或“片段”中。 [您可以在Acitivity中使用“ this”,在片段中使用getActivity()]
最后,我无法创建适配器,但是当前代码的组织方式需要将Activity上下文传递到Adapter中才能正常工作。从片段:
adapter = new MyComicAdapter(getActivity(), list);
来自活动:
adapter = new MyComicAdapter(this, list);
这很可能会防止您遇到异常。
答案 2 :(得分:0)
按如下所示将您的通话更改为新活动,
Intent intent=new Intent(context, ChapterActivity.class);
Activity activity=(Activity) context;
activity.startActivity(intent);