listview项目背景颜色变化

sar*_*ath 1 android

我正在开发一个Android应用程序.我已经使用创建了一个列表视图

setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrayname));   
getListView().setTextFilterEnabled(true);   
Run Code Online (Sandbox Code Playgroud)

现在我想更改所选项目的颜色.我可以通过放置来更改所选项目的背景

listviewobject.getChildAt(position).setBackgroundColor(Color.BLACK);
Run Code Online (Sandbox Code Playgroud)

在onListItemClick()中

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

l.getChildAt(prevpos).setBackgroundColor(Color.BLACK);
Run Code Online (Sandbox Code Playgroud)

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

Viv*_*ngh 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);
)};
Run Code Online (Sandbox Code Playgroud)

  • 虽然这最初起作用,但我发现它并不完美.如果列表足够大,可以滚动,滚动时背景颜色可以移动到不同的行.我认为这是因为View被重用于新显示的行. (4认同)

Usa*_*war 5

好吧在列表视图的属性中使用这个mught help:

android:listSelector="@drawable/list_selector"
Run Code Online (Sandbox Code Playgroud)

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

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

  • 那个程序我告诉你...因为你不需要把选择器....我提到的属性会自动执行这一切...你只需要制作一个drawable即一些颜色的图像条您的选择...记住这将是一个图像...并通过listselector属性将此图像设置为ListView .... (2认同)