Java 在Android中滚动屏幕时,ListView的替代颜色消失

Java 在Android中滚动屏幕时,ListView的替代颜色消失,java,android,listview,android-listview,view,Java,Android,Listview,Android Listview,View,我使用的是带有交替颜色行的ListView。但当ListView超过屏幕长度时,滚动时,替代颜色消失。 下面是我的代码: public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = getActivity().getLayoutInflater() .inflate(R.lay

我使用的是带有交替颜色行的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的图片


convertView
如果整个
ListView
适合在屏幕上显示,则该视图为
null
。但是,一旦开始滚动,
View
s将从屏幕上移出,并作为
convertView
传递给
getView()
方法。有时,接收到的
convertView
将是灰色的,即使您希望
视图
为白色。您的代码不处理这种情况,因为它只将
视图
涂成灰色,当不再需要背景色时,它不会清除背景色。要解决此问题,您需要设置奇数和偶数位置的颜色

这应该行得通

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;
}
试试这个代码

  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;

}

我希望这对您有所帮助。

我建议您使用多个视图,因此在您的案例中使用两个.xml文件

我在我的网站上的一篇文章中做了与您完全相同的事情:


希望这会有帮助

这就是上面所做的。我用position只是为了检查它是偶数还是奇数。但是如果position是偶数,你并没有清除背景色。