繁体   English   中英

在Android中滚动屏幕时,ListView的其他颜色消失

[英]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适合屏幕,则convertViewnull 但是,一旦开始滚动,移出屏幕的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM