【发布时间】:2017-02-08 04:47:57
【问题描述】:
我一直在关注this 制作RecyclerView 的指南,但我遇到了障碍。它给出的代码不是很清楚,但是在构建自定义Recyclerview.Adpater时,它有这个方法:
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
// create a new view
TextView v = (TextView) 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(v);
return vh;
}
现在,我似乎无法弄清楚R.layout.my_text_view 的来源。他们没有在布局文件中指定它。因此,当我尝试将该代码放入我的适配器时,它告诉我找不到该符号。所以,我将它作为 id 添加到我的TextView:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_recycle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".recycle.RecycleActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".recycle.RecycleActivity"/>
<include
layout="@layout/toolbar_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/my_text_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
但我仍然无法在R.layout.my_text_view 中使用my_text_view,因为它仍然找不到它。我也试过R.id.my_text_view,它可以找到它,但它说它需要一个布局,而不是一个ID。所以我尝试像这样使用R.layout.activity_recycle:
@Override
public RecycleViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
// create a new view
TextView v = (TextView) LayoutInflater.from(parent.getContext())
.inflate(R.layout.activity_recycle, parent, false);
// set the view's size, margins, paddings and layout parameters
return new ViewHolder(v);
}
但这不起作用,我得到了异常:
java.lang.ClassCastException: android.widget.RelativeLayout 无法转换为 android.widget.TextView
我错过了什么?这个神秘的my_text_view是从哪里来的,怎么用?
【问题讨论】:
-
R.layout.activity_recycle 是布局 textview 不采取布局。它将采用布局项目 ID。
-
R.layout.my_text_view 类似于布局或卡片,会在您的回收站视图上膨胀,与列表项相同
-
查看此答案并遵循该教程stackoverflow.com/a/41499210/7130121
标签: android android-layout android-recyclerview classcastexception layout-inflater