Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 滚动列表视图会将TextView颜色更改回原始颜色_Android_Listview_Colors_Textview - Fatal编程技术网

Android 滚动列表视图会将TextView颜色更改回原始颜色

Android 滚动列表视图会将TextView颜色更改回原始颜色,android,listview,colors,textview,Android,Listview,Colors,Textview,基本上,我的问题与此类似: 唯一的区别是我正在处理一个文本视图,它在滚动时改变颜色(文本视图在列表视图中) 我查找了TextView是否有类似于setCacheColorHint(Color.WHITE)的方法-我没有找到它 也许我应该动态设置默认的TextColor?因为目前,它是在XML中设置的,然后在代码中更改 我该怎么办 将颜色更改为蓝色的代码: private void highlightSelectedFile(View vw) { TextView fileName =

基本上,我的问题与此类似:

唯一的区别是我正在处理一个文本视图,它在滚动时改变颜色(文本视图在列表视图中)

我查找了TextView是否有类似于setCacheColorHint(Color.WHITE)的方法-我没有找到它

也许我应该动态设置默认的TextColor?因为目前,它是在XML中设置的,然后在代码中更改

我该怎么办

将颜色更改为蓝色的代码:

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的呈现方式有关。