android-更改某些行的自定义列表视图背景

时间:2014-10-01 05:14:50

标签: android android-listview

我需要更改listview上每行的背景颜色。我正在使用自定义列表视图。

每一行都有一个RelativeLayout,我改变它:

public View getView(int position, View convertView, ViewGroup parent) {
 ........
if (convertView == null) {
                convertView = inflater.inflate(R.layout.item, null);
                holder = new ViewHolder();
                holder.rl=(RelativeLayout)convertView.findViewById(R.id.rl);
                holder.rl.setBackgroundResource(R.drawable.roundcorner);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
         holder.rl.setBackgroundResource(R.drawable.round_corner_vip);
}}

我不会改变每一行的bakcground,我只是改变其中一些。

我想知道这是个坏主意吗?我的意思是,它是否消耗大量内存并且对性能有害?

谢谢

2 个答案:

答案 0 :(得分:3)

是的,您可以根据ListViewgetView()更改Position行的背景颜色。     将此代码放入您的getView()方法中。我使用位置% 44th item

之后重复着色
    switch (position % 4) {
        case 0:
            convertView.setBackgroundColor(Color.BLACK);
            break;
        case 1:
            convertView.setBackgroundColor(Color.RED);
            break;
        case 2:
            convertView.setBackgroundColor(Color.GREEN);
            break;
        case 3:
            convertView.setBackgroundColor(Color.GRAY);
            break;
        default:
            break;
        }

如果您在ListView中有Fix项目,那么您也可以根据位置

更改颜色
        if(position == 0) {
            convertView.setBackgroundColor(Color.BLACK);
        } else if(position == 1) {
            convertView.setBackgroundColor(Color.RED);
        } else if(position == 2) {
            convertView.setBackgroundColor(Color.GRAY);
        } else if(position == 3) {
            convertView.setBackgroundColor(Color.GREEN);
        }

希望它有所帮助!

答案 1 :(得分:3)

你的drawable名称表示你有两种类型的drawable roundcorner and round_corner_vip所以我认为你必须设置一个vip flag作为@Haresh Chhelana在评论中说,然后在你的适配器类{{1}你应该做那样的事情:

getView()