Android 滚动列表视图会将TextView颜色更改回原始颜色
基本上,我的问题与此类似: 唯一的区别是我正在处理一个文本视图,它在滚动时改变颜色(文本视图在列表视图中) 我查找了TextView是否有类似于setCacheColorHint(Color.WHITE)的方法-我没有找到它 也许我应该动态设置默认的TextColor?因为目前,它是在XML中设置的,然后在代码中更改 我该怎么办 将颜色更改为蓝色的代码:Android 滚动列表视图会将TextView颜色更改回原始颜色,android,listview,colors,textview,Android,Listview,Colors,Textview,基本上,我的问题与此类似: 唯一的区别是我正在处理一个文本视图,它在滚动时改变颜色(文本视图在列表视图中) 我查找了TextView是否有类似于setCacheColorHint(Color.WHITE)的方法-我没有找到它 也许我应该动态设置默认的TextColor?因为目前,它是在XML中设置的,然后在代码中更改 我该怎么办 将颜色更改为蓝色的代码: private void highlightSelectedFile(View vw) { TextView fileName =
private void highlightSelectedFile(View vw)
{
TextView fileName = (TextView) vw.findViewById(R.id.file_name);
//Log.v("color: ", Integer.toString(fileName.getCurrentTextColor()));
if(fileName.getCurrentTextColor() == Color.BLACK) {
fileName.setTextColor(Color.BLUE);
} else {
fileName.setTextColor(Color.BLACK);
removeFromSelectedFiles(new File(fileName.getText().toString()));
}
}
这些文本视图在我滚动它们所在的列表视图后返回黑色:
ListView lv = (ListView) ac.findViewById(android.R.id.list);
在适配器中,您可能正在使用一个数据项,该数据项将数据应用于
adapter
中的视图。当您滚动时,您的视图
将被回收,您的getView()
将使用不同的视图
对象调用。你的问题很容易解决。只需再添加一个int颜色在数据项中编码>变量,并像这样使用它
public View getView(int position, View convertView, ViewGroup parent) {
// efficient stuff here
// after applying your data
fileName.setTextColor(data.color);
}
还要更改此方法:
private void highlightSelectedFile(DataItem data) {
if(data.color == Color.BLACK) {
data.color = Color.BLUE;
} else {
data.color = Color.BLACK;
removeFromSelectedFiles(new File(fileName.getText().toString()));
}
// to update ListView
myAdapter.notifyDataSetChanged();
}
仅将此语句放在XML文件的列表中。android:scrollingCache=“false”
它将解决您的问题。发布您的代码。这将有助于他们中的一些人发布答案。始终尝试发布一些代码,以便其他人能够更清楚地理解您的问题。这将是一个证明,让别人你已经尝试了一些东西。谢谢。它并没有解决我的问题——我试过了。正如我所说,问题是TextView将颜色改回黑色,而不是ListView本身。好吧,我知道你的问题,更新我的答案。不起作用-我猜这与在ListView中滚动时TextView的呈现方式有关。