我需要更改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,我只是改变其中一些。
我想知道这是个坏主意吗?我的意思是,它是否消耗大量内存并且对性能有害?
谢谢
答案 0 :(得分:3)
是的,您可以根据ListView
从getView()
更改Position
行的背景颜色。
将此代码放入您的getView()
方法中。我使用位置% 4
在4th 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()