【发布时间】:2020-01-15 17:27:46
【问题描述】:
我有一个简单的 GridView BaseAdapter,当单击 Grid 中的单元格时,它当然会为 Grid 中的每个位置调用 getView。在大多数情况下,getView 会为视图中的每个位置调用(应该如此),但有时只调用第一个位置。我需要为视图中的每个位置调用此方法以突出显示选定的单元格并取消突出显示其他单元格,但由于不是为每个位置调用它,它不会取消突出显示未选定的单元格。
getView 方法:
class AdapterSelectReference(context: Context, list: List<String>) : BaseAdapter()
{
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View
{
Logger.log(C.LOG_I, "~*ADAPTER_SELECT_REFERENCE", object{}.javaClass.enclosingMethod?.name + ": start: position = " + position)
val view: View
val lrh: ListRowHolder
if(convertView == null)
{
view = this.mInflator.inflate(R.layout.grid_cell_layout, parent, false)
lrh = ListRowHolder(view)
view.tag = lrh
}
else
{
view = convertView
lrh = view.tag as ListRowHolder
}
lrh.label.text = list[position]
if(position != Settings.referenceSelected.book)
lrh.label.setBackgroundColor(Color.parseColor("#ffffff"))
else
lrh.label.setBackgroundColor(Color.parseColor("#E0E7E7"))
return view
}
}
活动:
class ActivitySelectReference : AppCompatActivity()
{
lateinit var gvBooks: GridView
lateinit var adapterBooks: AdapterSelectReference
lateinit var listBooks: List<String>
override fun onCreate(savedInstanceState: Bundle?)
{
listBooks = resources.getStringArray(R.array.bible_books).toList()
gvBooks = findViewById(R.id.references_grid_view_books) as GridView
adapterBooks = AdapterSelectReference(this, listBooks)
gvBooks.setAdapter(adapterBooks)
...
}
...
}
在某个触摸时调用仅显示位置 0 的日志打印输出:
2020-01-15 09:23:16.376 26646-26646/com.samuelriesterer.custombiblereadingplan I/~*ADAPTER_SELECT_REFERENCE: getView: start: position = 0
2020-01-15 09:23:16.393 26646-26646/com.samuelriesterer.custombiblereadingplan I/chatty: uid=10283(u0_a283) com.samuelriesterer.custombiblereadingplan identical 1 line
2020-01-15 09:23:16.399 26646-26646/com.samuelriesterer.custombiblereadingplan I/~*ADAPTER_SELECT_REFERENCE: getView: start: position = 0
【问题讨论】:
-
如果没有所有相关代码,这是不可能调查的。例如,您没有包含适配器实现的其余部分 - 由于缺少方法,当前示例无法编译。
标签: android kotlin baseadapter android-gridview getview