Android 程序题02

本文介绍了如何使用RecyclerView展示一组天气信息,每个item包含天气状况、最高气温和最低气温。通过创建WeatherAdapter适配器,实现了点击天气item时跳转到WeatherInfoActivity,并将所选天气信息传递到详情页面。适配器中设置了点击监听事件,利用Gson解析的数据填充列表,并在点击时获取相应位置的天气数据。
摘要由CSDN通过智能技术生成

使用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);
            }
    }
}

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小源同学r

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值