android.widget.textview无法应用于android.view.view

android.widget.textview无法应用于android.view.view,android,Android,我正试着跟随Android官方文档 在页面的第三个(从顶部开始)代码示例中,有一个关于如何实现MyAdapter的示例,该示例提供对数据集中项目的访问,为项目创建视图,并在项目不再可见时替换项目 问题是,在onCreateViewHolder上,他们将v这是一个视图传递给ViewHolder,该视图就在这之前实现。ViewHolder的构造函数需要一个TextView。安卓Studio 1.0则大喊: android.widget.textview cannot be applied to an

我正试着跟随Android官方文档

在页面的第三个(从顶部开始)代码示例中,有一个关于如何实现
MyAdapter
的示例,该示例提供对数据集中项目的访问,为项目创建视图,并在项目不再可见时替换项目

问题是,在
onCreateViewHolder
上,他们将
v
这是一个
视图
传递给
ViewHolder
,该视图就在这之前实现。
ViewHolder
的构造函数需要一个
TextView
。安卓Studio 1.0则大喊:

android.widget.textview cannot be applied to android.view.view

怎么了?

这是新的
RecyclerView
模式。在其中,您使用3个组件:

ViewHolder
扩展RecyclerView.ViewHolder的对象。在其中,定义视图字段和接受视图v作为参数的构造函数。在此构造函数中,使用v.findviewbyd()绑定所有这些视图

onCreateViewHolder()
做两件事-首先从布局中展开视图对象。然后创建一个ViewHolder(您在上面定义的),并将该膨胀视图作为参数传递

最后,
onBindViewHolder()
被传递给一个ViewHolder对象,在该对象中,您将内容放入第一步中定义的所有字段中,并在第三步中绑定

至于你提到的例子,有一个错误。
onCreateViewHolder()
方法应如下所示:

// Create new views (invoked by the layout manager)
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
                                               int viewType) {
    // create a new view
    View v = LayoutInflater.from(parent.getContext())
                           .inflate(R.layout.my_text_view, parent, false);
    // set the view's size, margins, paddings and layout parameters
    ...
    ViewHolder vh = new ViewHolder((TextView)v);  //You need a cast here
    return vh;
}
或者ViewHolder应该定义一个需要视图对象的构造函数(这实际上更正确):


我也经历过同样的错误,我能够按照说明解决,并确保布局文件只包含TextView ie

<?xml version="1.0" encoding="utf-8"?>


    <TextView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text1"

        android:layout_alignParentTop="true"
        android:textSize="20sp"
        />


我认为你在向下投票时有点太轻率了。这是怎么离题的?想解释一下吗?试着把视图转换成TextView
(TextView)v
,这当然是我做的。我只是想知道这是不是出了什么问题,或者这是从示例中忘记的。看起来这可能是示例中的一个错误。我会给你一张赞成票,以取消其他人的反对票。
<?xml version="1.0" encoding="utf-8"?>


    <TextView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text1"

        android:layout_alignParentTop="true"
        android:textSize="20sp"
        />