我有一个在onCreate中初始化的适配器和一个在onViewCreated中初始化的列表视图。我尝试setAdapter,但无法在onViewCreated中传递适配器。我尝试了多种方法,如将它们从onCreate移动到onViewCreated中,但如果在其他位置初始化适配器,应用程序似乎会崩溃,并且除了在onViewCreated中之外,我无法在任何位置使用findViewById
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)
}
}
1条答案
按热度按时间wydwbb8l1#
您的
adapter
对象是onCreate(...)
的局部变量,因此无法在其他地方访问它。您可以将它移动到类变量中,如下所示:我还在
ArrayAdapter
构造函数中添加了requireContext()
调用,因为您不希望在那里创建MainActivity
的新示例。