我对Android缺乏经验并且正在开发一个应用程序,该应用程序只是以表格的形式显示校钟时间表,并希望突出显示/将背景颜色应用于代表当前时期的ListView项目。
目前我尝试通过设置listSelector颜色来实现这一目的:
来自activity_bell_schedule.xml:
<ListView android:layout_height="wrap_content"
android:layout_width="0dp"
android:id="@+id/lstPeriods"
android:layout_weight=".4"
android:listSelector="@color/colorAccent"
android:divider="@color/colorPrimaryDark"
android:dividerHeight="1dp"/>
但是,我需要能够锁定/强制选择保留为当前时段的ListView项。我尝试在一个通过我的BellScheduleActivity类的onCreate函数调用的函数中设置它(我将2用于测试目的的位置):
来自BellScheduleActivity.java:
lvp.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
System.out.println(position);
lvp.setSelection(2);
lvp.setItemChecked(2, true);
lvt.setSelection(2);
}
});
我尝试了各种涉及选择突出显示和选择的方法。如果有人知道我做错了什么或者有其他方法可行,我会非常感激。
答案 0 :(得分:0)
您可以通过将自定义适配器设置为列表视图来执行此操作。在该适配器中,您可以定义自定义行为。
在您的情况下,它将覆盖适配器中的以下方法 -
在该适配器中,您可以定义两种视图类型。在getView()中,您可以调用getItemViewType()并定义自定义行为。
Example for getItemViewType() is here
Another example which is similar to your question
这应该可以解决您的问题。如果有效,请告诉我。这就像显示自定义listViews的默认模式。
P.S。我建议你使用RecyclerView,因为它是更新(更好)的ListView,是Material Design的新标准。