Я бы хотел использовать setItemChecked, чтобы выделить элемент списка по умолчанию. checkItemPosition устанавливает флажок selectedItemPosition, но не отображается список элементов.
Вот мой код адаптера массива:
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)
}
}
Код списка просмотра 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()
Как правильно установить выделенный элемент по умолчанию?