listview项目背景颜色变化

时间:2012-02-20 06:03:57

标签: android

我正在开发一个Android应用程序。我使用

创建了一个列表视图
setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrayname));   
getListView().setTextFilterEnabled(true);   

现在我想更改所选项目的颜色。我可以通过放置

来更改所选项目的背景
listviewobject.getChildAt(position).setBackgroundColor(Color.BLACK);
onListItemClick()

中的

此代码正在更改背景颜色,但如果我选择任何其他列表项,那么之前单击的列表项的颜色也是红色。所以我改变之前点击的列表项的颜色

l.getChildAt(prevpos).setBackgroundColor(Color.BLACK);

现在的问题是,如果我将以前点击的listitems颜色的背景更改为黑色。然后我看不到该特定listitem上的文本。我再次单击然后只有我可以看到该项目上的文本。所以它看起来weired.please帮助我的朋友

5 个答案:

答案 0 :(得分:19)

经过大量的帖子和博客后,我发现这个解决方案对我有用......

声明行变量全局

public View row;

your_list.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> a, View v,
                        int position, long id) {

    if (row != null) {
        row.setBackgroundResource(R.color.orange);
    }
    row = v;
    v.setBackgroundResource(R.color.transparent_green);
)};

答案 1 :(得分:5)

在列表视图的属性中使用它很简单:

android:listSelector="@drawable/list_selector"

它会自动将所选的drawable设置为所选项目的背景。希望这适合你,drawable可能是你自己选择的颜色。

说明:将图像条添加到drawables文件夹中,并在列表视图的listSelector属性中设置该图像。现在,您将浏览列表视图,列表视图的背景将是您设置的图像条的颜色,而不是android的原生颜色。希望你现在得到它...... :-)

答案 2 :(得分:1)

我发生了这种情况,因为你把文字颜色设置为黑色,你设置的背景颜色也是黑色,这就是你看不出差异的原因。要设置背景颜色,您可以使用以下行。

view.setBackgroundColor(Color.YELLOW);

使用不同的颜色,然后使用文字颜色。

答案 3 :(得分:1)

默认情况下,背景为黑色。如果您已自定义列表视图,则滚动时它将变为黑色。因此,当您将列表视图定义背景缓存颜色设置为您需要的颜色时,如下所示:

    yourlistView.setCacheColorHint(Color.WHITE);

答案 4 :(得分:0)

您可以做的不是使用带有颜色值的.setBackgroundColor(),而是创建Color State List并为其分配.setBackgroundResource()。这样,您可以定义列表项可以变为的各种状态,具体取决于项目的当前状态。