我想默认使用 setItemChecked 突出显示列表项。checkedItemPosition 设置checkedItemPosition 但不突出显示项目列表。
这是我的数组适配器代码:
class MyListAdapter(
context: Context,
private val myItemList: List<Mytem>)
: ArrayAdapter<Mytem>(context, R.layout.item_simple, myItemList) {
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val inflater = context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val rowView: View?
if (!myItemList[position].isHeader) {
rowView = inflater.inflate(R.layout.item_simple, parent, false)
rowView.itemTitle.text = myItemList[position].name
} else {
rowView = inflater.inflate(R.layout.item_header_group, parent, false)
rowView.header.text = myItemList[position].name
}
return rowView
}
override fun isEnabled(position: Int): Boolean {
return !myItemList[position].isHeader
}
}
在片段中,我有以下代码:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
this.viewModel.myListItem.observe(this, Observer<List<MyItem>> { item ->
val adapter = MyListAdapter(this.view!!.context, item!!)
this.view!!.listViewFragment.adapter = adapter
this.view!!.listViewFragment.divider = null
this.view!!.listViewFragment.isClickable = true
})
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_listview, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
view.validatePenChoiceButton.setOnClickListener {
viewModel.validate(this.view!!.listViewFragment.checkedItemPosition)
}
}
listview cml 代码:
<ListView
android:id="@+id/listViewFragment"
android:layout_width="match_parent"
android:layout_height="0sp"
android:layout_weight="30"
android:choiceMode="singleChoice"
android:listSelector="@color/item_listSelector_color"
android:textColor="@color/white" />
我尝试了以下方法:检查项已更改,但列表视图未突出显示。
this.view!!.listViewFragment.setItemChecked(3, true)
我已经对此进行了测试:
this.view!!.listViewFragment.refreshDrawableState()
this.view!!.listViewFragment.invalidateViews()
如何正确设置默认突出显示的项目?