TEL:400-8793-956
当前位置:程序、服务器

如何在 Stormy 中列出一周中的几天以进行扩展预测

提问者: 近期获赞: 浏览人数: 发布时间:2021-09-22 08:52:51

 问:我已经为 Stormy Android 应用程序构建了 7 天预测活动。不幸的是,扩展预测在 7 天预测的每一天旁边都显示“星期一”。

 
任何人都对如何列出从今天开始的一周中接下来的 7 天有一些提示或想法。此应用程序使用 ListView 布局进行扩展预测。
 
 日期适配器
导入 android.content.Context ; 
导入 android.view.LayoutInflater ;
导入 android.view.View ;
导入 android.view.ViewGroup ;
导入 android.widget.BaseAdapter ;
导入 android.widget.ImageView ;
导入 android.widget.TextView ;
公共类DayAdapter扩展BaseAdapter {私有上下文mContext ; 私人日[] mDays ; 公共DayAdapter (上下文上下文
 
      , 天[] 天)  { 
mContext =上下文; mDays =天数;} @Override public int getCount () {返回mDays 。长度;} @Override public Object getItem ( int position ) { return mDays [ position ]; } @Override public long getItemId ( int position ) {          
 
        返回 0 ;  // 我们不会使用它。标记项以便于参考
} @Override public View getView ( int position , View convertView , ViewGroup parent ) { ViewHolder holder ; if ( convertView == null ) { // 全新的convertView = LayoutInflater . 来自(mContext )。膨胀( R . layout .    
 
              daily_list_item ,  null ); 
持有人=新的ViewHolder ();// holder.iconImageView = (ImageView) convertView.findViewById(R.id.iconImageView); 持有人。温度标签= ( TextView ) convertView 。findViewById ( R . id . temperatureLabel ); 持有人。dayNameLabel = ( TextView ) convertView 。findViewById ( R . id . dayNameLabel );               
 
            持有人。lowTempLabel  =  ( TextView )  convertView 。findViewById ( R . id . lowTempLabel ); 
转换视图。设置标签(持有人);} else { holder = ( ViewHolder ) convertView 。getTag (); } Day day = mDays [位置]; // holder.iconImageView.setImageResource(day.getIconId()); 持有人。
 
        温度标签。setText ( day . getTemperatureMax ()  +  "" ); 
持有人。低临时标签。的setText (天。getTemperatureMin ()+ “” ); 持有人。日名标签。的setText (天。getDayOfTheWeek ()); 返回转换视图;}私有静态类ViewHolder { ImageView iconImageView ;          
 
          // 默认为 public 
TextView temperatureLabel ; TextView的lowTempLabel ; TextView dayNameLabel ; } }         
 
 日.java
包 com.joshbgold.WeatherBuddy ; 
导入android.os.Parcel ;导入android.os.Parcelable ;导入java.text.SimpleDateFormat ; 导入java.util.Date ; 导入java.util.TimeZone ; 公共类日实现Parcelable {私人长期的mtime ; 私人字符串mSummary ; 私人字符串mIcon ; 私人字符串mTimeZone ; 私人双人
 
      mTemperatureMax ; 
私人双mTemperatureMin ; 私人长mSunrise ; 私人长mSunset ; 私人双mMoonPhase ; public long getTime () { return mTime ; } public void setTime ( long time ) { mTime = time ; } public String getSummary () { return mSummary ; }      
  
    public  void  setSummary ( String  summary )  { 
mSummary = summary ; } public int getTemperatureMax () { return ( int ) Math . 圆形(mTemperatureMax );} public void setTemperatureMax ( double temperatureMax ) { mTemperatureMax = temperatureMax ; }公共双getTemperatureMin () {          
 
        返回 ( int )数学。圆形(mTemperatureMin );
} public void setTemperatureMin ( double temperatureMin ) { mTemperatureMin = temperatureMin ; } public String getIcon () { return mIcon ; } public void setIcon ( String icon ) { mIcon = icon ; }公共字符串getTimeZone获取    
 
      ()  {
返回mTimeZone ; } public void setTimeZone ( String timeZone ) { mTimeZone = timeZone ; } public int getIconId () {返回预测。getIconId ( mIcon ); } public String getDayOfTheWeek () { SimpleDateFormat formatter = new SimpleDateFormat ( "EEEE" ); 格式化程序。         
 
        setTimeZone ( TimeZone . getTimeZone ( mTimeZone )); 
日期日期=新日期(); 字符串dayOfTheWeek =格式化程序。格式(日期);返回dayOfTheWeek ;} @Override public int describeContents () { return 0 ; } @覆盖公共无效writeToParcel (包裹DEST ,INT标志)            
 
          {
目标。writeLong ( mTime ); 目的地。writeString ( mSummary ); 目的地。writeDouble ( mTemperatureMax ); 目的地。writeDouble ( mTemperatureMin ); 目的地。writeString ( mIcon ); 目的地。writeString ( mTimeZone ); }私人日(包裹在){ mTime = in . 读长        
 
          (); 
mSummary =中。读取字符串(); mTemperatureMax =中。读双(); mTemperatureMin =中。读双(); mIcon =中。读取字符串(); mTimeZone =中。读取字符串(); } public Day () { } public static final Creator < Day > CREATOR = new Creator < Day          
 
           >() { 
@覆盖公共日createFromParcel (包裹源){返回新日(源); } @Override public Day [] newArray ( int size ) { return new Day [ size ]; } }; public String getMoonPhaseDescription () { String phaseDescription ; 如果( mMoonPhase == 0        
 
           )  { 
phaseDescription = "新月" ; } else if ( mMoonPhase > 0 && mMoonPhase < 0.25 ) { phaseDescription = " waxing crescent" ; } else if ( mMoonPhase == 0.25 ) { phaseDescription = "第一季度" ; } else if ( mMoonPhase > 0.25 && mMoonPhase < 0.5 ) {              
     
            phaseDescription  =  "打蜡凸起" ; 
} else if ( mMoonPhase == 0.5 ) { phaseDescription = "满月" ; } else if ( mMoonPhase > 0.5 && mMoonPhase < 0.75 ) { phaseDescription = " waing gibbous " ; } else if ( mMoonPhase == 0.75 ) { phaseDescription = "last季度" ; }              
 
         else  if  ( mMoonPhase  >  0.75  &&  mMoonPhase  <  1 )  { 
phaseDescription = "衰弱的新月" ; } else phaseDescription = "--" ; 返回阶段描述;} public void setMoonPhase ( double moonPhase ) { mMoonPhase = moonPhase ; } public long getSunrise () { return mSunrise ; }              
 
    public  String  getFormattedSunriseTime (){   //将我们从 API 接收到的 Unix 时间转换为人类可读的时间
SimpleDateFormat formatter = new SimpleDateFormat ( "h:mm" ); 格式化程序。setTimeZone (时区。getTimeZone获取(getTimeZone获取())); 日期dateTime =新日期( getSunrise () * 1000 ); 返回格式化程序。格式(日期时间);}公开的            
 
     void  setSunrise (长 日出) { 
mSunrise =日出;} public long getSunset () { return mSunset ; } public String getFormattedSunsetTime (){ //将我们从 API 接收到的 Unix 时间转换为人类可读的时间SimpleDateFormat formatter = new SimpleDateFormat ( "h:mm" ); 格式化程序。setTimeZone ( TimeZone . getTimeZone ( getTimeZone          
 
        ())); 
日期dateTime =新日期( getSunset () * 1000 ); 返回格式化程序。格式(日期时间);} public void setSunset (长日落){ mSunset = sunset ; } }       
         
    
答:Getter 通常不应该有参数,因为它们已经与调用它们的对象相关联。将其调用为 day.getDayOfTheWeek(day) 是多余的,因为它已经可以访问 day 中的每个字段。它可以而且应该被称为 day.getDayOfTheWeek()。
 
请注意,我将其称为“getter”,尽管它比仅返回成员变量的值要复杂一些。这在类之外是无关紧要的,因为,如果您还记得,类应该像黑匣子一样工作,并且任何 get..() 都应该返回有关对象的相关信息,而不管它如何获取它。另一方面是在类内部,您返回的内容应该与对象的成员变量相关。而且,你错过了一个关键:当日预测是什么时候。
上一篇: 在我的 mac 上编译不工作!
下一篇: 理解大于符号 Python ">"