【发布时间】:2019-09-26 17:30:02
【问题描述】:
我对@987654322@ 中的RecyclerView 有疑问。在MainActivity 我有一个TabLayout 和一个ViewPager。我想在我的第一个标签中显示RecyclerView,但我不断收到以下错误:
E/RecyclerView:没有附加适配器;跳过布局
我尝试将回收器适配器初始化移动到OnViewCreated,但没有结果。
这是我的片段代码:
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
listOfGreetings?.add(0, GreetingModel("Greeting 1", R.drawable.ic_launcher_background))
listOfGreetings?.add(1, GreetingModel("Greeting 2", R.drawable.greeting_1))
listOfGreetings?.add(2, GreetingModel("Greeting 3", R.drawable.greeting_1))
listOfGreetings?.add(3, GreetingModel("Greeting 4", R.drawable.greeting_1))
listOfGreetings?.add(4, GreetingModel("Greeting 5", R.drawable.greeting_1))
listOfGreetings?.add(5, GreetingModel("Greeting 6", R.drawable.greeting_1))
listOfGreetings?.add(6, GreetingModel("Greeting 7", R.drawable.greeting_1))
listOfGreetings?.add(7, GreetingModel("Greeting 8", R.drawable.greeting_1))
val recyclerView = container?.findViewById<RecyclerView>(R.id.recyclerView)
val manager = LinearLayoutManager(activity)
recyclerView?.setHasFixedSize(true)
recyclerView?.layoutManager = manager
recyclerView?.adapter = greetingAdapter
return inflater.inflate(R.layout.fragment_category, container, false)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
greetingAdapter = GreetingAdapter(activity!!, listOfGreetings!!.toList())
}
这是 XML:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".CategoryFragment">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="3dp"
/>
</FrameLayout>
【问题讨论】:
-
在使用
onViewCreated()和view.findViewById()时是否仍然报错? -
使用 onViewCreated() 扩展依赖于根视图的视图。
-
@TaseerAhmad 是的。它仍然给出错误,没有结果((
-
@MartinMarconcini 我已经在 onViewCreated 上移动了我的回收器视图初始化,但它没有帮助(覆盖 fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) val recyclerView = view.findViewById
(R.id.recyclerView) val manager = LinearLayoutManager(activity) recyclerView?.setHasFixedSize(true) recyclerView?.layoutManager = manager recyclerView?.adapter = greetingAdapter greetingAdapter = GreetingAdapter(activity!!, listOfGreetings! !.toList()) } -
错误告诉你你的 RecyclerView,在布局传递时,没有适配器(还),所以它的布局传递将被跳过(因为没有适配器的 RecyclerView 基本上是没用的);尝试将
recyclerView?.adapter = greetingAdapter行移到您获得参考的下方。还要发布您的适配器,如果我们看不到它,就很难判断适配器是否工作正常;)
标签: kotlin android-recyclerview