android.widget.textview无法应用于android.view.view
我正试着跟随Android官方文档 在页面的第三个(从顶部开始)代码示例中,有一个关于如何实现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
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"
/>