[英]Alternate color of ListView disappears on scrolling the screen in Android
我使用带有交替行颜色的ListView。 但是,当ListView超过屏幕的长度时,滚动时,替代颜色消失。 下面是我的代码:
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = getActivity().getLayoutInflater()
.inflate(R.layout.problem_list_row, null);
if(position%2!=0) {
convertView.setBackgroundColor(Color.parseColor("#ebebeb"));
}
}
if(position%2!=0){
convertView.setBackgroundColor(Color.parseColor("#ebebeb"));
}
/* some code */
return convertView;
}
下面是ListView的图像。
试试这个代码
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = getActivity().getLayoutInflater()
.inflate(R.layout.problem_list_row, null);
}
if(position%2==0)
{
// SET EVEN POSITION COLOR
convertView.setBackgroundColor(Color.parseColor("#ebebeb"));
}
else
{
//SET ODD POSITION COLOR
}
/* some code */
return convertView;
}
我希望这可以帮助你。
如果整个ListView
适合屏幕,则convertView
为null
。 但是,一旦开始滚动,移出屏幕的View
就会作为convertView
传递到getView()
方法。 有时,即使您希望View
为白色,收到的convertView
也会为灰色。 您的代码无法处理这种情况,因为它仅将View
s灰色View
灰色,而不再需要时则不会清除背景颜色。 要解决此问题,您需要同时设置奇数和偶数位置的颜色。
这应该工作。
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = getActivity().getLayoutInflater()
.inflate(R.layout.problem_list_row, null);
}
convertView.setBackgroundColor(Color.parseColor(position%2!=0 ? "#ebebeb" : "#ffffff"));
/* some code */
return convertView;
}
我建议您使用多个视图,因此请使用两个.xml文件。
我在我的网站上的文章中做了与您想要的完全相同的事情: http : //raverat.github.io/android-listview-multi-views/
希望这会有所帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.