Android 程序题02

使用RecyclerView展示一组天气信息, item的布局文件为item_layout,包含三个控件tv_weather,tv_high和tv_low,分别显示天气状况、最高气温和最低气温。当单击某个天气item时,跳转到天气详情页面WeatherInfoActivity,并把该天的天气信息传递到页面中。(假设天气信息已使用Gson解析到List<Weather>类型的变量list中)。

  1. 请根据以上描述,编写循环列表的适配器WeatherAdapter。
public class WeatherAdapter extends RecyclerView.Adapter<WeatherAdapter.WeatherHolder> {
    
    
    private Context mContext;  // mContext保存页面传递的Context
    private List<Weather> mList=new ArrayList<>();  //Weather是天气实体类,mList保存页面传递过来的天气数据

    public WeatherAdapter(Context mContext, List<Weather> mList) {
    
    
        this.mContext = mContext;
        this.mList = mList;
    }

    @NonNull
    @Override
    public WeatherHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    
    
        WeatherHolder holder=new WeatherHolder(LayoutInflater.from(mContext).inflate(R.layout.item_layout,parent,false));
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull WeatherHolder holder, int position) {
    
    
        //复用holder时,加载新天气信息
        holder.tvWeather.setText(mList.get(position).getWeather());
        holder.tvHigh.setText(mList.get(position).getHigh());
        holder.tvLow.setText(mList.get(position).getLow());
        //当单击某个item时,跳转到页面WeatherInfoActivity,并向其传递item中的天气数据
        holder.itemView.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View view) {
    
    
                String weatherInfo=mList.get(holder.getAdapterPosition()).getWeather();
                String high=mList.get(holder.getAdapterPosition()).getHigh();
                String low=mList.get(holder.getAdapterPosition()).getLow();
                Intent intent=new Intent(mContext,WeatherInfoActivity.class);
                intent.putExtra("weather",weatherInfo);
                intent.putExtra("high",high);
                intent.putExtra("low",low);
                mContext.startActivity(intent);
            }
        });
    }

    @Override
    public int getItemCount() {
    
    
        return mList.size();
    }

    public class WeatherHolder extends RecyclerView.ViewHolder {
    
    
        private TextView tvWeather;
        private TextView tvHigh;
        private TextView tvLow;
        public WeatherHolder(@NonNull View itemView) {
    
    
            super(itemView);
            //实例化item中的控件tv_weather,tv_high,tv_low
            tvWeather=itemView.findViewById(R.id.tv_weather);
            tvHigh=itemView.findViewById(R.id.tv_high);
            tvLow=itemView.findViewById(R.id.tv_low);
            }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_43216714/article/details/124780428
今日推荐