Java 从ListView到RecyclerView

Java 从ListView到RecyclerView,java,android,listview,nullpointerexception,android-recyclerview,Java,Android,Listview,Nullpointerexception,Android Recyclerview,我正在开发一个简单的应用程序来跟踪我正在观看的节目,起初我使用的是ListView,但现在我想使用RecyclerView。我将所有节目都存储在本地数据库中。但是,我在将代码正确转换为RecyclerView时遇到问题。我无法测试它,因为我正在与以下行中的错误进行斗争: showAdapter = new ArrayAdapter<Show>(this, showArrayAdapter); // the error 并匹配showAdapters.java中的类型 publ

我正在开发一个简单的应用程序来跟踪我正在观看的节目,起初我使用的是ListView,但现在我想使用RecyclerView。我将所有节目都存储在本地数据库中。但是,我在将代码正确转换为RecyclerView时遇到问题。我无法测试它,因为我正在与以下行中的错误进行斗争:

   showAdapter = new ArrayAdapter<Show>(this, showArrayAdapter); // the error
并匹配showAdapters.java中的类型

public ShowsAdapter(Context mContext, List<Show> mShows) {
        this.mContext = mContext;
        this.mShows = mShows;
    }

你的一个错误是

private DataSource datasource;
List<Show> shows = datasource.getAllShows();

另外,不要忘记在
updateUI()
方法中提供上述布局管理器。

您的错误之一是

private DataSource datasource;
List<Show> shows = datasource.getAllShows();

另外,不要忘记在
updateUI()
方法中提供如上所述的布局管理器。

不确定您是否正在设置

showAdapter = new ArrayAdapter<Show>(this, showArrayAdapter); 

我不确定你是否正在设置

showAdapter = new ArrayAdapter<Show>(this, showArrayAdapter); 

列表不能转换为int

这不是您标记的行,除非
getAllShows()
返回一个整数


不过,您正在混合适配器。Recyclerview不使用ArrayAdapter

你上了这门课

 ShowsAdapter extends RecyclerView.Adapter
但你不用它

   showAdapter = new ArrayAdapter<Show>(this, showArrayAdapter); // the error
    recyclerView.setAdapter(showAdapter);
不过,首先,如果不希望出现nullpointerexception,则需要停止在字段中获取显示

private List<Show> shows; // = datasource.getAllShows();

补充说明

此对活动的强制转换是不必要的,并且在您希望在其他活动中使用此适配器时会导致问题

((MainActivity) mContext).startActivityForResult

列表不能转换为int

这不是您标记的行,除非
getAllShows()
返回一个整数


不过,您正在混合适配器。Recyclerview不使用ArrayAdapter

你上了这门课

 ShowsAdapter extends RecyclerView.Adapter
但你不用它

   showAdapter = new ArrayAdapter<Show>(this, showArrayAdapter); // the error
    recyclerView.setAdapter(showAdapter);
不过,首先,如果不希望出现nullpointerexception,则需要停止在字段中获取显示

private List<Show> shows; // = datasource.getAllShows();

补充说明

此对活动的强制转换是不必要的,并且在您希望在其他活动中使用此适配器时会导致问题

((MainActivity) mContext).startActivityForResult

在onCreate中,您正在初始化前设置适配器

请删除onCreate中的以下行,并使用LinearLayoutManger设置回收器视图的方向

在onCreate中删除此行

recyclerView.setAdapter(showAdapter);

在onCreate中,您正在初始化前设置适配器

请删除onCreate中的以下行,并使用LinearLayoutManger设置回收器视图的方向

在onCreate中删除此行

recyclerView.setAdapter(showAdapter);

无法从arraylist数据类型转换为arrayadaptor数据类型。您需要更改代码中的以下行

if (showAdapter == null) {
   showAdapter = new ArrayAdapter<Show>(this, showArrayAdapter);
   recyclerView.setAdapter(showAdapter);
}
在ShowAdapter类中,将变量mShows的数据类型从ArrayAdaptor更改为Arraylist。请参见下面的示例代码

private ArrayList<Show> mShows;
public ShowsAdapter(Context mContext, ArrayList<Show> mShows) {
    this.mContext = mContext;
    this.mShows = mShows;
}
private ArrayList mShows;
公共ShowsAdapter(上下文mContext、数组列表mShows){
this.mContext=mContext;
this.mShows=mShows;
}

无法将arraylist数据类型转换为arrayadaptor数据类型。您需要更改代码中的以下行

if (showAdapter == null) {
   showAdapter = new ArrayAdapter<Show>(this, showArrayAdapter);
   recyclerView.setAdapter(showAdapter);
}
在ShowAdapter类中,将变量mShows的数据类型从ArrayAdaptor更改为Arraylist。请参见下面的示例示例代码

private ArrayList<Show> mShows;
public ShowsAdapter(Context mContext, ArrayList<Show> mShows) {
    this.mContext = mContext;
    this.mShows = mShows;
}
private ArrayList mShows;
公共ShowsAdapter(上下文mContext、数组列表mShows){
this.mContext=mContext;
this.mShows=mShows;
}
showAdapter=新的阵列适配器(此为showArrayAdapter)

您的
ArrayAdapter
构造函数与其中任何一个都不匹配,它的第二个参数应为整数中的resourceId,而不是列表,因此出现错误

showAdapter=新的阵列适配器(此为showArrayAdapter)


您的
ArrayAdapter
构造函数与其中任何一个都不匹配,它的第二个参数应为整数中的resourceId,而不是列表,因此错误不清楚引用的是哪一行。。。还有,谁说你需要一个回收站?您可以在ListViewAnd中使用ViewHolder模式,
ListShows=datasource.getAllShows()
看起来像一个函数,它将抛出一个nullpointerexception,因此不管编译错误如何,该代码都不会运行。不确定u r是否设置了新的ArrayAdapter(这个,showArrayAdapter);显示适配器。看起来这就是问题创建ShowsAdapter实例并重试?添加了一个单独的错误行以澄清我的更新答案您还有一个问题。在修复了这两个错误之后,告诉你是否遇到了任何其他错误,不清楚这是指哪一行。。。还有,谁说你需要一个回收站?您可以在ListViewAnd中使用ViewHolder模式,
ListShows=datasource.getAllShows()
看起来像一个函数,它将抛出一个nullpointerexception,因此不管编译错误如何,该代码都不会运行。不确定u r是否设置了新的ArrayAdapter(这个,showArrayAdapter);显示适配器。看起来这就是问题创建ShowsAdapter实例并重试?添加了一个单独的错误行以澄清我的更新答案您还有一个问题。在修复这两个错误后,告诉您是否面临任何其他错误。将getActivity()替换为Activity.this,因为这是一个Activity。我也在做同样的事。哦,是的。将getActivity()替换为Activity.this,因为这是一个活动。我也在做同样的事。哦,是的。修复了ShowAdapter中无需更改的内容class@cricket_007在ShowAdapter类构造函数中,第二个参数是arrayadapter数据类型,但在作为arraylist数据类型传递的原始代码中。是否可以将arraylist转换为arrayadapter数据类型?ShowAdapter中无需更改任何内容class@cricket_007在ShowAdapter类构造函数中,第二个参数是arrayadapter数据类型,但在作为arraylist数据类型传递的原始代码中。是否可以将arraylist转换为arrayadapter数据类型?
if (showAdapter == null) {
    showAdapter = new ShowAdapter(this, showArrayAdapter); 
    recyclerView.setAdapter(showAdapter);
}
private ArrayList<Show> mShows;
public ShowsAdapter(Context mContext, ArrayList<Show> mShows) {
    this.mContext = mContext;
    this.mShows = mShows;
}