gpt4 book ai didi

android - 如何在 ListView 中选择另一个项目之前保持 ListView 内容的更改颜色不变?

转载 作者:行者123 更新时间:2023-11-29 15:25:34 26 4
gpt4 key购买 nike

我正在开发一个项目,我需要在选择 ListView 的项目时更改 ListView 中文本的颜色。

我可以在选择列表项时更改文本的颜色,但几秒钟后,颜色会变回之前的颜色。在单击另一个列表项之前,我希望该颜色不变。看看下面的截图:

enter image description here

我可以在单击 ListView 的项目时获得白色的更改颜色文本,但几秒钟后文本变回以前的颜色。

我想在单击 ListView 的其他项目之前保持 textview 的白色。

以下是我的 TextView 选择器文件。对于黑色文本:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="@android:color/white"/>
<item android:state_focused="true" android:color="@android:color/white"/>
<item android:state_selected="false" android:color="@android:color/black"/>
</selector>

对于红色文本:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="@android:color/white"/>
<item android:state_focused="true" android:color="@android:color/white"/>
<item android:state_selected="false" android:color="@color/red"/>
</selector>

最佳答案

您需要将所选项目的位置存储在某处并覆盖适配器的 getView 以便在回收 View 时正确设置背景。此外,您还需要告诉您的适配器在选择项目时刷新 View 。

如果您使用 ArrayAdapter,您可以像这样扩展它:

private class SelectionArrayAdapter extends ArrayAdapter<String> {

private int selectedItem = -1;

public SelectionArrayAdapter(Context context, int resource, String[] objects) {
super(context, resource, objects);
}

public void setSelection(int position) {
selectedItem = position;
notifyDataSetChanged();
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
if(position == selectedItem) {
view.setBackgroundColor(Color.RED);
}
else {
view.setBackgroundColor(Color.TRANSPARENT);
}
return view;
}
}

当点击一个项目时,你只需要调用 setSelection 方法:

    listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
adapter.setSelection(position);
}
});

关于android - 如何在 ListView 中选择另一个项目之前保持 ListView 内容的更改颜色不变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13561107/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com