S. *_*zop 0 android kotlin android-recyclerview
“无法智能地强制转换为“ GridLayoutManager”,因为“ ViewManager”是一个可变属性,可能此时已更改”
是AndroidStudio在尝试向我的RecyclerView添加分频器时显示的错误。
PixelsFragment.kt
class PixelsFragment : Fragment() {
private lateinit var recyclerView: RecyclerView
private lateinit var viewManager: RecyclerView.LayoutManager
private lateinit var viewAdapter: RecyclerView.Adapter<*>
private var listener: OnFragmentInteractionListener? = null
private lateinit var pixels: List<Pixel>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
var numberOfColumns = 1
viewManager = GridLayoutManager(this.context, numberOfColumns)
viewAdapter = MyRecyclerViewAdapter(pixels)
recyclerView = view!!.findViewById<RecyclerView>(R.id.RVJanuary).apply {
setHasFixedSize(true)
layoutManager = viewManager
adapter = viewAdapter
addItemDecoration(DividerItemDecoration(recyclerView.context, viewManager.getOrientation())) //Error on this line, underlining viewManager
}
}
}
Run Code Online (Sandbox Code Playgroud)
我找到了这个答案,它说这是可能引起的,因为变量可能恰好在null执行该行时出现,然后它们提供了3个解决方案。但是,据我所知,viewManager绝不是null因为我将其声明为不可为空的变量。因此,我正在寻找不同的解释和解决方案。
您已声明viewManager为RecyclerView.LayoutManager。泛型RecyclerView.LayoutManager没有getOrientation()方法- 该方法仅存在于LinearLayoutManager及其子类中,例如您正在使用的GridLayoutManager。
错误消息告诉您,因为它是可变属性,所以不能假设viewManagertype RecyclerView.LayoutManager是GridLayoutManagera-您可以将其设置为其他LayoutManager没有getOrientation()方法的属性。
解决此问题的最简单方法是将您的类型更改viewManager为GridLayoutManager。这样,只有a GridLayoutManager可用,getOrientation()并保证可用。
| 归档时间: |
|
| 查看次数: |
159 次 |
| 最近记录: |