Adapter onBind方法无法识别android中行xml中的视图项
创建一个包含最多4项的列表的简单程序时,我选择了RecyclerView而不是ListView进行优化。我将RecyclerView添加并绑定到我的main.xml和main活动中,创建了一个row.xml,该行定义了RecyclerView中的每一行的外观,并创建并绑定了一个自定义适配器,该适配器使用所需的方法扩展了RecyclerView.adapter。我的代码发布在下面->Adapter onBind方法无法识别android中行xml中的视图项,android,user-interface,android-recyclerview,recyclerview-layout,Android,User Interface,Android Recyclerview,Recyclerview Layout,创建一个包含最多4项的列表的简单程序时,我选择了RecyclerView而不是ListView进行优化。我将RecyclerView添加并绑定到我的main.xml和main活动中,创建了一个row.xml,该行定义了RecyclerView中的每一行的外观,并创建并绑定了一个自定义适配器,该适配器使用所需的方法扩展了RecyclerView.adapter。我的代码发布在下面-> <!-- This is row.xml --> <LinearLayout xmlns:and
<!-- This is row.xml -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_width="match_parent"
android:id="@+id/container_4_row"
android:layout_height="@dimen/media_item_height">
<ImageView
android:id="@+id/cover_art"
android:layout_width="80dp"
android:layout_height="match_parent"
android:layout_marginEnd="50dp"
android:background="@color/colorPrimary"
android:contentDescription="@string/play_item"
android:src="@drawable/ic_action_name" />
<LinearLayout
android:id="@+id/text_container"
android:layout_width="200dp"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/title"
tools:text="The Best Music EVAH1111 FOREVER YOUNG I'M SOME!!!11^H^H"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:ellipsize="end"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="?android:attr/textColorPrimary"/>
<TextView
android:id="@+id/author"
tools:text="John Doe, his brothers, his sisters, his pets and his more than amazing band"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:ellipsize="end"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondary"/>
</LinearLayout>
我的问题是,当我运行应用程序时,RecyclerView.Adapter onBindViewHolder()无法识别父视图holder(它引用了行.xml)中的子视图……我不知道为什么它不能识别,因为之前我在运行它时没有插入任何文本或为imageview指定空值,所以它没有问题,它建立正确,现在它随机调整。我尝试的是,使缓存失效/清除并重新启动AS(没有纠正问题),我还尝试创建一个新的虚拟项目并复制和粘贴我的代码,运行它时没有任何问题,但我的主项目中有很多文件/助手类等问题
下面是错误日志
应用程序已终止。您正在传递两个值
String[] mew = new String[]{"mew", "two"};
尝试生成4行,这可能会产生indexOutOfBounds异常
@Override
public int getItemCount() {
return 4;//use your mDataset's size.
}
您正在传递两个值
String[] mew = new String[]{"mew", "two"};
尝试生成4行,这可能会产生indexOutOfBounds异常
@Override
public int getItemCount() {
return 4;//use your mDataset's size.
}
在onBindViewHolder中有一个小错误 更新下面的代码,我更正了它
viewHolder.aCover.setBackgroundColor(Color.RED);
viewHolder.mAuthor.setText("John Doe, his brothers, his sisters"); viewHolder.mTitle.setText("The Best Music EVAH1111");
你指的是错误的观点。这导致了错误
如果问题得到解决,请更新并通知我。在onBindViewHolder中有一个小错误 更新下面的代码,我更正了它
viewHolder.aCover.setBackgroundColor(Color.RED);
viewHolder.mAuthor.setText("John Doe, his brothers, his sisters"); viewHolder.mTitle.setText("The Best Music EVAH1111");
你指的是错误的观点。这导致了错误
更新并让我知道问题是否得到解决。正如@Mike M.在评论中指出的 您是否有多个res/layout*/文件夹,其中您可能在一个文件夹中创建了行,而没有这些视图?如果是的话,它们是否都和你在上面发布的一样;i、 例如,所有视图都具有完全相同的ID?另外,v21+是否需要不同的版本
我有两个不同的文件夹包含相同的布局,默认布局文件夹和v21文件夹,但是我的视图Id和一些父级布局视图不匹配,在我更新它们以反映两个文件夹中的精确副本后,我的应用程序像@Mike M.在评论中指出的那样运行得很快 您是否有多个res/layout*/文件夹,其中您可能在一个文件夹中创建了行,而没有这些视图?如果是的话,它们是否都和你在上面发布的一样;i、 例如,所有视图都具有完全相同的ID?另外,v21+是否需要不同的版本
我有两个不同的文件夹包含相同的布局,默认布局文件夹和v21文件夹,但是我的视图Id和一些父级布局视图不匹配,在我更新它们以反映两个文件夹中的精确副本后,我的应用程序运行得很快,所以问题是什么?@AndrewMyers代码已发布,我仍然在这个问题上工作,我知道它应该会起作用,因为我的POC在我创建时起作用,最终将删除虚拟项目/应用程序,但在我的一生中不会在我的原始项目上工作……这是AS中的一种bug吗?这通常会发生吗?或者这发生在你们两人身上了吗?
无法识别父视图持有者中的子视图
您看到了什么错误?@Sagar我已经发布了错误日志,但请记住,当我创建新应用程序并复制/粘贴查看包含4行的RecyclerVIew列表所需的代码/文件时,没有出现任何问题,由相同的图像视图和两个文本视图组成您是否有多个res/layout*/
文件夹,其中您可能在一个文件夹中创建了行
,而没有这些视图
s?那么问题是什么呢?@AndrewMyers代码已发布,我仍在处理该问题,我知道它应该可以工作,因为我的POC在我创建并最终将删除虚拟项目/应用程序时起作用,但在我的一生中不会在我的原始项目上工作……这是AS中的一种bug吗?这通常会发生吗?或者这发生在你们两人身上了吗?无法识别父视图持有者中的子视图
您看到了什么错误?@Sagar我已经发布了错误日志,但请记住,当我创建新应用程序并复制/粘贴查看包含4行的RecyclerVIew列表所需的代码/文件时,没有出现任何问题,由相同的imageview和2个TextView组成。您是否有多个res/layout*/
文件夹,其中您可能在一个文件夹中创建了行
,而没有这些视图
s?我在getItemCount()方法中特别放置了4作为项目计数。我还在onBindViewHolder()中的author和title TextView中插入了伪文本,我在getItemCount()方法中将4作为项计数。我还在onBindViewHolder()中的author和title TextView中插入了虚拟文本不,不是这样,我实际上有两个不同的布局文件夹,视图id不匹配@mikeM在上面的评论中指出了这一点。不,不是这样,实际上,我有两个不同的布局文件夹,视图id不匹配@mikeM在上面的评论中指出了这一点。