Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ClassCastException和Google示例代码:我的my_text_view.xml文件应该是什么样子?_Java_Android - Fatal编程技术网

Java ClassCastException和Google示例代码:我的my_text_view.xml文件应该是什么样子?

Java ClassCastException和Google示例代码:我的my_text_view.xml文件应该是什么样子?,java,android,Java,Android,我一直在尝试学习如何使用RecyclerView,但我一直在使用onCreateViewHolder方法时遇到错误。我怀疑我的my_text_view.xml格式不正确。谷歌的文档没有提供一个示例XML文件供我使用 下面是adapter类(直接取自Google教程),以及它下面的XML文件: 公共类MyAdapter扩展了RecyclerView.Adapter{ 私有字符串[]mDataset; //提供对每个数据项的视图的引用 //复杂数据项可能需要每个项有多个视图,并且 //您可以访问视图

我一直在尝试学习如何使用
RecyclerView
,但我一直在使用
onCreateViewHolder
方法时遇到错误。我怀疑我的
my_text_view.xml
格式不正确。谷歌的文档没有提供一个示例XML文件供我使用

下面是adapter类(直接取自Google教程),以及它下面的XML文件:

公共类MyAdapter扩展了RecyclerView.Adapter{ 私有字符串[]mDataset; //提供对每个数据项的视图的引用 //复杂数据项可能需要每个项有多个视图,并且 //您可以访问视图持有者中数据项的所有视图 公共静态类MyViewHolder扩展了RecyclerView.ViewHolder{ //在本例中,每个数据项只是一个字符串 公共文本视图文本视图; 公共MyViewHolder(文本视图v){ 超级(五); textView=v; } } //提供合适的构造函数(取决于数据集的类型) 公共MyAdapter(字符串[]myDataset){ mDataset=myDataset; } @凌驾 public MyAdapter.MyViewHolder onCreateViewHolder(视图组父级, int视图类型){ //创建新视图 TextView v=(TextView)LayoutInflater.from(parent.getContext()) .inflate(R.layout.my_text_view,parent,false);//此行抛出ClassCastException MyViewHolder vh=新的MyViewHolder(v); 返回vh; } //替换视图的内容(由布局管理器调用) @凌驾 公共无效onBindViewHolder(MyViewHolder,int位置){ //-在此位置从数据集中获取元素 //-用该元素替换视图的内容 holder.textView.setText(mDataset[position]); } //返回数据集的大小(由布局管理器调用) @凌驾 public int getItemCount(){ 返回mDataset.length; } } 以及
my\u text\u view.xml
的内容:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="TextView" />
</LinearLayout>

XML文件的根视图是
LinearLayout
,但代码将其膨胀,然后试图将其转换为文本视图

您可以从xml中删除LinearLayout,使其如下所示:

<?xml version="1.0" encoding="utf-8"?>
  <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="TextView" />
在您的视窗夹中:

   textView = v.findViewById(R.id.text);

如果你有计划的话,我建议你选择第二种选择 以后修改此选项,因为您无法向viewholder添加更多项目,如果 你选择第一个解决方案。否则它会再次崩溃


XML文件的根视图是
LinearLayout
,但代码将其膨胀,然后试图将其转换为文本视图

您可以从xml中删除LinearLayout,使其如下所示:

<?xml version="1.0" encoding="utf-8"?>
  <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="TextView" />
在您的视窗夹中:

   textView = v.findViewById(R.id.text);

如果你有计划的话,我建议你选择第二种选择 以后修改此选项,因为您无法向viewholder添加更多项目,如果 你选择第一个解决方案。否则它会再次崩溃


xml中的根布局是
linearLayout
您应该使用
findViewById()
在viewHolder类中查找
TextView
子级:

试试这个:

 public static class MyViewHolder extends RecyclerView.ViewHolder {
    // each data item is just a string in this case
    public TextView textView;
    public MyViewHolder(View v) {
        super(v);
        textView = v.findViewById(R.id.text);
    }
 }

xml中的根布局是
linearLayout
您应该使用
findViewById()
在viewHolder类中查找
TextView
子级:

试试这个:

 public static class MyViewHolder extends RecyclerView.ViewHolder {
    // each data item is just a string in this case
    public TextView textView;
    public MyViewHolder(View v) {
        super(v);
        textView = v.findViewById(R.id.text);
    }
 }

@mperic,我绝对会走这条路,因为你将创建具有多个UI片段甚至多个视图持有者的RecyclerViews,所以你应该习惯这个概念。@mperic,我绝对会走这条路,因为你将创建具有多个UI片段甚至多个视图持有者的RecyclerViews,所以你应该习惯这个概念。