确定ListView位置何时更改

时间:2013-12-16 01:14:02

标签: java android listview textview

对Android开发来说还是一个新手,我有一个问题,我已经谷歌的废话,并没有找到一个可靠的答案。

我只想知道如何确定ListView中的位置何时发生变化。具体来说,我有一个ListView,当我单击它时TextView文本会改变颜色。问题是,当我点击ListView中的其他位置时,我所处位置的文本颜色保持不变。

基本上,有没有办法在ListView中监听位置变化,然后在该位置发生变化时执行代码?

非常感谢!

1 个答案:

答案 0 :(得分:1)

如果您只想一次选择一个项目,请确保在设置ListView时将选择模式设置为单一。

myListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE)

您需要设置onItemClickListener。

myListView..setOnItemClickListener(new AdapterView.OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long rowId) {
        // Your Code Here               
        }
    });

设置ArrayAdapter时,您可以使用其中一个默认的Android项目布局,例如simple_list_item_activated_1,它会突出显示所选项目的背景。

myArrayAdapter = new ArrayAdapter<String>(getContext(),
            android.R.layout.simple_list_item_activated_1, myArrayList);

如果您想要自己的自定义行为,例如更改文本颜色而不是背景,那么只需将项目布局替换为您自己的一个。查看默认的Android项目布局,了解它们如何编写它们。例如,下面是默认的Android项目布局android.R.layout.simple_list_item_activated_1,您可以在其中看到他们使用名为activatedBackgroundIndicator的选择器来定义背景颜色。

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
    android:background="?android:attr/activatedBackgroundIndicator"
    android:minHeight="?android:attr/listPreferredItemHeightSmall"
/>

<强> <Additional> 在您的情况下,要更改文本颜色而不是背景,您需要使用选择器作为文本颜色。在color目录中创建一个res文件夹。在其中创建一个选择器:

<强> my_color_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_activated="true" android:color="@color/my_red_color />
    <item android:drawable="@color/my_blue_color" />  <!-- color when not selected -->
</selector>

然后在您的自定义项目布局中,将文字颜色设置为my_color_selector