Android - 通过选择器在 ListView 中选择项目的背景颜色

标签 android listview

我有一个 ListView 和一个 DrawerLayout 并通过选择器应用背景,我为所选项目指定了背景颜色,但未应用该颜色,绿色(不知道它来自哪里,它不是在我的 colors.xml 或任何地方)

这是我的

菜单样式.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:state_selected="true"
    android:drawable="@color/mainColor"/>
<!--mainColor is #4CAEE3-->
<item
    android:drawable="@android:color/white" />

ListView :

<ListView
    android:id="@+id/left_drawer"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="@drawable/menuitem_style"
    android:choiceMode="singleChoice"
    android:divider="@android:color/white"
    android:dividerHeight="1dp"
    android:paddingTop="10dp" />

相关Java代码

 mDrawerList.setItemChecked(position, true);
        mDrawerList.setSelection(position);

这是结果:

enter image description here

mainColor 肯定是蓝色而不是绿色 (#4CAEE3) 我做错了什么,不确定是什么。任何帮助将不胜感激。提前致谢

最佳答案

请记住在 ListView 和 recyclerview 中 View 被回收的概念。

您可以跟踪当前所选元素的位置:

 OnItemClickListener listViewOnItemClick = new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapter, View arg1, int position, long id) {
                mSelectedItem = position;
                mAdapter.notifyDataSetChanged();
        }
    };

并覆盖适配器的 getView 方法:

   @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final View view = View.inflate(context, R.layout.item_list, null);

        if (position == mSelectedItem) {
            // set your color
        }

        return view;
    }

对我来说,它成功了。

关于Android - 通过选择器在 ListView 中选择项目的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46545065/

相关文章:

java - 如何以编程方式将文本设置为 RadioGroup 内部的 RadioButton?

Android ListView 滚动到顶部

android - 区域圆叠加

java - Android 中 import utility.* 和 only need fun 有什么区别?

android - OnItemClick 和 OnItemLongClick 在仅将 Button 放入 ListView 时不起作用

android - 如何处理listview android中的复选框?

android - 带有简单适配器的 ListView 不显示文本

android - 如何在 ListView 中平滑滚动

android - AlarmManager PendingIntent.FLAG_NO_CREATE 取消警报后返回不为空

java - 缺少 Google App Engine 应用程序的 JSON 库?