Android ListViews强制选择

时间:2016-10-06 14:47:27

标签: android listview

我对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"/>

但是,我需要能够锁定/强制选择保留为当前时段的Lis​​tView项。我尝试在一个通过我的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);
        }
    });

我尝试了各种涉及选择突出显示和选择的方法。如果有人知道我做错了什么或者有其他方法可行,我会非常感激。

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以通过将自定义适配器设置为列表视图来执行此操作。在该适配器中,您可以定义自定义行为。

在您的情况下,它将覆盖适配器中的以下方法 -

  • getItemViewType()
  • getViewTypeCount()
  • getView()

在该适配器中,您可以定义两种视图类型。在getView()中,您可以调用getItemViewType()并定义自定义行为。

Example for getItemViewType() is here

Another example which is similar to your question

这应该可以解决您的问题。如果有效,请告诉我。这就像显示自定义listViews的默认模式。

P.S。我建议你使用RecyclerView,因为它是更新(更好)的ListView,是Material Design的新标准。

相关问题