我已经创建了一些自定义阵列适配器,它们都可以工作。我创建了这个像其他的一样,但我一直得到这个错误:
"安卓系统.视图.膨胀异常:只能与有效的ViewGroup根和attachToRoot = true一起使用"
我的阵列适配器:
class CustomArrayAdapter(private val context: Activity, private val customList : ArrayList<Component>)
: ArrayAdapter<Component>(context, R.layout.customcardcomponent, customList) {
@SuppressLint("ViewHolder")
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val view = LayoutInflater.from(context).inflate(R.layout.customcardcomponent, parent, false)
val description: TextView = view.findViewById(R.id.Description)
val progressText : TextView = view.findViewById(R.id.ProgressBarText)
val progressBar : LinearProgressIndicator = view.findViewById(R.id.ProgressBar)
description.text = customList[position].description
progressText.text = "${customList[position].current}/${customList[position].max}"
progressBar.max = customList[position].max
progressBar.progress = customList[position].current
return view
}
}
我的列表视图页面. kt文件
class ListViewPage : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_listview, container, false)
val customListView = view.findViewById<ListView>(R.id.customListView)
val listDescriptions = arrayOf(
"description 1",
"description 2",
"description 3",
"description 4",
)
val listMax = arrayOf(5, 10, 25, 50)
val listCurrent = arrayOf(current, current, current, current)
val customList : ArrayList<Component> = ArrayList()
for (i in listDescriptions.indices){
val component = Component(listMax[i], listCurrent[i] ,listDescriptions[i])
customList.add(component)
if (customList.size == 4){
customListView.adapter = CustomArrayAdapter(context as Activity, customList)
}
}
return view
}
}
我的列表视图页面. xml文件
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/customListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@null"
android:dividerHeight="0dp"/>
</FrameLayout>
在ArrayAdapter中,我尝试:
更改{布局充气机.来自(上下文).充气(R.布局.自定义卡组件,父,假)}
到{layoutinflater. from(上下文). inflate(R.布局.自定义卡组件,父,真)}
但我得到以下错误:"java. lang.不支持的操作异常:AdapterView中不支持addView(视图、布局参数)"
我还尝试为这个列表视图创建一个完整的自定义类,但仍然得到同样的错误。
我想知道这个ArrayAdapter有什么问题
1条答案
按热度按时间h5qlskok1#
下面是你应该仔细研究的片段中的一行:
你不能把你的片段当作一个活动
如果您想引用片段上下文,您可能想使用
requireContext()
或requireActivity()
代替if(context as Activity)您还可能希望将适配器的class first参数从activity更改为Fragment或yourFragmentName