我无法引用适配器
I cant refrence the adapter
我有一个在 onCreate 中启动的适配器和一个在 onViewCreated 中启动的列表视图
我正在尝试设置适配器,但无法在 onViewCreated 中传递适配器。
我尝试了多种方法,比如将它们从 onCreate 移动到 onViewCreated,但如果我在其他任何地方初始化适配器,应用程序似乎会崩溃,我不能在任何地方使用 findViewById,但在 onViewCreated
class Istoric : Fragment() {
var array= arrayOf("item1","item2")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val adapter = ArrayAdapter(MainActivity(),R.layout.listview_item,array)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_istoric, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val lv1: ListView = view.findViewById(R.id.lv)
lv1.setAdapter(adapter)
}
}
您的 adapter
对象是 onCreate(...)
的局部变量,因此无法在其他地方访问。您可以像这样将它移动到 class 变量:
class Istoric : Fragment() {
var array= arrayOf("item1","item2")
private lateinit var adapter: ArrayAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
adapter = ArrayAdapter(requireContext(), R.layout.listview_item, array)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_istoric, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val lv1: ListView = view.findViewById(R.id.lv)
lv1.setAdapter(adapter)
}
}
我还添加了对 ArrayAdapter
构造函数的 requireContext()
调用,因为您不想在那里创建 MainActivity
的新实例。
我有一个在 onCreate 中启动的适配器和一个在 onViewCreated 中启动的列表视图 我正在尝试设置适配器,但无法在 onViewCreated 中传递适配器。 我尝试了多种方法,比如将它们从 onCreate 移动到 onViewCreated,但如果我在其他任何地方初始化适配器,应用程序似乎会崩溃,我不能在任何地方使用 findViewById,但在 onViewCreated
class Istoric : Fragment() {
var array= arrayOf("item1","item2")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val adapter = ArrayAdapter(MainActivity(),R.layout.listview_item,array)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_istoric, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val lv1: ListView = view.findViewById(R.id.lv)
lv1.setAdapter(adapter)
}
}
您的 adapter
对象是 onCreate(...)
的局部变量,因此无法在其他地方访问。您可以像这样将它移动到 class 变量:
class Istoric : Fragment() {
var array= arrayOf("item1","item2")
private lateinit var adapter: ArrayAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
adapter = ArrayAdapter(requireContext(), R.layout.listview_item, array)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_istoric, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val lv1: ListView = view.findViewById(R.id.lv)
lv1.setAdapter(adapter)
}
}
我还添加了对 ArrayAdapter
构造函数的 requireContext()
调用,因为您不想在那里创建 MainActivity
的新实例。