gpt4 book ai didi

android - FirebaseRecyclerViewAdapter 转换错误

转载 作者:行者123 更新时间:2023-11-29 00:06:00 24 4
gpt4 key购买 nike

所以我有一个要用 FirebaseRecyclerViewAdapter 填充的 RecycleView。

我正在关注这个例子:https://github.com/firebase/firebaseui-android#using-a-recyclerview

不过我遇到了一个奇怪的错误:

java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView cannot be cast to android.view.ViewGroup

这是我在 onCreateView 中的内容:

RecyclerView recycler = (RecyclerView) mView.findViewById(R.id.rvTasks);
recycler.setLayoutManager(new LinearLayoutManager(getActivity()));

FirebaseRecyclerViewAdapter mAdapter =
new FirebaseRecyclerViewAdapter<Task, TaskViewHolder>(Task.class, android.R.layout.simple_list_item_1, TaskViewHolder.class, mRef) {
@Override
public void populateViewHolder(TaskViewHolder taskViewHolder, Task task) {
taskViewHolder.taskText.setText(task.getText());
}
};
recycler.setAdapter(mAdapter);

这是 ViewHolder:

私有(private)静态类 TaskViewHolder 扩展 RecyclerView.ViewHolder { TextView任务文本;

    public TaskViewHolder(View itemView) {
super(itemView);
taskText = (TextView)itemView.findViewById(android.R.id.text1);
}
}

这是任务类:

public class Task {
String author;
String text;

public Task() {
}

public Task(String author, String text) {
this.author = author;
this.text = text;
}

public String getAuthor() {
return author;
}

public String getText() {
return text;
}
}

有什么想法吗?提前致谢!

最佳答案

你真的应该在你的帖子上放置更多的错误。它会显示问题发生的位置。不过,在查看了 FirebaseRecyclerViewAdapter 的源代码后,我会尝试做出有根据的猜测。

问题似乎与您传递给适配器的布局有关,android.R.layout.simple_list_item_1。适配器需要一个由 ViewGroup 的子类包装的布局,例如 LinearLayoutFrameLayout 或某些其他类型的布局。 android.R.layout.simple_list_item_1 是这样实现的:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:gravity="center_vertical"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:minHeight="?android:attr/listPreferredItemHeightSmall" />

如您所见,TextView 没有包含在 Layout 中。修复错误的最快方法是创建自己的布局,在 FrameLayout 中使用 TextView,如下所示:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:gravity="center_vertical"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:minHeight="?android:attr/listPreferredItemHeightSmall" />
</FrameLayout>

然后您可以将创建的布局传递给适配器。我们将其命名为 my_simple_list_item_1.xml,您可以将其作为 R.layout.my_simple_list_item_1 传递给适配器。

关于android - FirebaseRecyclerViewAdapter 转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33761540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com