Android 如何在getview方法中检查日期值

Android 如何在getview方法中检查日期值,android,Android,我正在使用android应用程序,我的Listview中显示了不同类型的视图。我的问题是 我已经在ListView中显示了5项。值为状态、要求日期、响应 日期、标题、名称。如何更改所需的日期值小于今天日期列表视图 背景颜色是红色。我可以检查下面的模型。显示颜色,但我可以快速滚动 列表视图颜色不稳定。请帮助我 我的getview: public View getView(int position, View convertView, ViewGroup parent) { Vi

我正在使用android应用程序,我的Listview中显示了不同类型的视图。我的问题是

我已经在ListView中显示了5项。值为状态、要求日期、响应

日期、标题、名称。如何更改所需的日期值小于今天日期列表视图

背景颜色是红色。我可以检查下面的模型。显示颜色,但我可以快速滚动

列表视图颜色不稳定。请帮助我

我的getview:

public View getView(int position, View convertView, ViewGroup parent) {
          View view = super.getView(position, convertView, parent);
            HashMap<String, String> str=Action_module_screen.mylist.get(position);
           String req=str.get("Req_date");
                          Calendar c2 = Calendar.getInstance();
                    Calendar c3 = Calendar.getInstance();
                    Calendar c = Calendar.getInstance();
                    int cyear = c.get(Calendar.YEAR);
                    int cmonth = c.get(Calendar.MONTH);
                    int cday = c.get(Calendar.DAY_OF_MONTH);
                    c2.set(cyear,cmonth,cday);    
                         Locale l=new Locale(req);
                            Calendar c1 = Calendar.getInstance(l);
                            int cyear1 = c1.get(Calendar.YEAR);
                            int cmonth1 = c1.get(Calendar.MONTH);
                            int cday1 = c1.get(Calendar.DAY_OF_MONTH);
                             c3.set(cyear1,cmonth1,cday1);         


                  String s=str.get("status");

            if((s.equals("CLO"))||(s.equals("APP"))||(s.equals("ANN"))||(s.equals("ANR"))||(s.equals("AOK")))
            { 
                 view.setBackgroundColor(Color.GREEN);  
            }
            if(s.equals("NEW"))
            {
                 view.setBackgroundColor(Color.WHITE);  
            }
            if(s.equals("REJ"))
            {
                 view.setBackgroundColor(Color.GRAY);   
            }   

            if(c2.after(c3))
                  {
                  view.setBackgroundColor(Color.RED);
                   }


      return view;

    }
public View getView(int位置、视图转换视图、视图组父视图){
视图=super.getView(位置、转换视图、父级);
HashMap str=Action\u module\u screen.mylist.get(位置);
字符串req=str.get(“req_日期”);
Calendar c2=Calendar.getInstance();
Calendar c3=Calendar.getInstance();
Calendar c=Calendar.getInstance();
int cyear=c.get(日历年);
int cmonth=c.get(日历月);
int cday=c.get(日历日/月);
c2.集合(cyear、cmonth、cday);
语言环境l=新语言环境(req);
Calendar c1=Calendar.getInstance(l);
int cyear1=c1.get(日历年);
int cmonth1=c1.get(日历月);
int cday1=c1.get(日历日/月);
c3.集合(cyear1、CMONT1、cday1);
字符串s=str.get(“status”);
如果((s.equals(“CLO”))|(s.equals(“APP”))|(s.equals(“ANN”))|(s.equals(“ANR”))|(s.equals(“AOK”))
{ 
视图.setBackgroundColor(颜色.绿色);
}
如果(s.equals(“新”))
{
视图.setBackgroundColor(颜色.白色);
}
如果(s.equals(“REJ”))
{
视图.背景颜色(颜色.灰色);
}   
如果(c2.在(c3)之后)
{
视图.setBackgroundColor(颜色.红色);
}
返回视图;
}

我可能错了,但我相信问题在于您没有默认的背景色。由于视图是重复使用的(通过convertView),您可能已经将背景设置为红色,然后当您回到这里时,您可能不会将颜色设置回默认值,不管它是什么。当然,我不确定您的数据是什么样子的,但在我看来,您的if子句都不匹配