Java 从ListView到RecyclerView
我正在开发一个简单的应用程序来跟踪我正在观看的节目,起初我使用的是ListView,但现在我想使用RecyclerView。我将所有节目都存储在本地数据库中。但是,我在将代码正确转换为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
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;
}