android - ListView 项目背景颜色在滚动时发生变化,

标签 android listview

我有一个 listview ,我在其中显示文件和文件夹列表。 我正在使用我的 getView 方法作为

static class ViewHolder {
    protected TextView text1;
    protected TextView text2;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder viewHolder = null;

    if(convertView == null){

        LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);        
        convertView = inflater.inflate(R.layout.row, parent, false);

        viewHolder = new ViewHolder();
        viewHolder.text1 = (TextView) convertView.findViewById(R.id.text1);
        viewHolder.text2 = (TextView) convertView.findViewById(R.id.text2);

        convertView.setTag(viewHolder);

    }
    else{
        viewHolder = (ViewHolder) convertView.getTag();
    }

    viewHolder.text1.setText(itemsArrayList.get(position).getFileName());
    viewHolder.text2.setText(itemsArrayList.get(position).getSize());

    <if( itemsArrayList.get(position).isHidden() ) {
        convertView.setBackgroundColor(context.getResources().getColor(R.color.hiddenColor));
    }

    return convertView;
}

如果文件/文件夹被隐藏,我正在将列表项的背景颜色更改为 hiddenColor,
(默认背景颜色为 XML)

但是在滚动时它几乎将所有列表项背景颜色设置为隐藏颜色。

我知道这是由于 ListView 回收造成的,但不知道如何解决。

最佳答案

您还必须设置未隐藏的颜色,因为如果 View 被重用,您将获得 hiddenColor(如果它是在转换 View 之前设置的)。

if( itemsArrayList.get(position).isHidden() ) {
    convertView.setBackgroundColor(context.getResources().getColor(R.color.hiddenColor));
} else {
   **convertView.setBackgroundColor(Put your other color here)**
}

关于android - ListView 项目背景颜色在滚动时发生变化,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22713963/

相关文章:

android - 动态创建 RecyclerView UI - Android

android - 滚动时 ListView 显示重复的项目

android从 Activity 到 fragment 传递和检索额外内容

android - 纠结谷歌测试

Android - 检查耳机按钮点击

java - Android 获取序列化()

java - ListView 滚动时仅显示行

android - Onclick 监听器方法中的警报对话框

php - listView 上没有图像显示

android - ListView 占用所有屏幕空间