import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.fusquare.henji.philips.R; import com.fusquare.henji.philips.bean.BacknetWeatherbean; import com.fusquare.henji.philips.data.HenderData; import org.androidannotations.annotations.ItemClick; import org.androidannotations.annotations.ViewById; import java.util.ArrayList; import java.util.List; /** * Created by huanzw on 2018/3/29. */ public class KwrAdapter extends RecyclerView.Adapter { //先定义两个ItemViewType,0代表头,1代表表格中间的部分 private static final int ITEM_VIEW_TYPE_HEADER = 0; private static final int ITEM_VIEW_TYPE_ITEM = 1; //数据源 private List<BacknetWeatherbean.ResultBean> dataLists; //构造函数 public KwrAdapter(List<BacknetWeatherbean.ResultBean> dataList) { this.dataLists = dataList; } /** * 判断当前position是否处于第一个 * @param position * @return */ public boolean isHeader(int position) { return position == 0; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { //在onCreateViewHolder方法中,我们要根据不同的ViewType来返回不同的ViewHolder if (viewType == ITEM_VIEW_TYPE_HEADER) { //对于Header,我们应该返回填充有Header对应布局文件的ViewHolder(再次我们返回的都是一个布局文件,请根据不同的需求做相应的改动) return new HeaderViewHolder(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_head_weath, null)); } else { //对于Body中的item,我们也返回所对应的ViewHolder return new BodyViewHolder(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_kwr, null)); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int position) { viewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (itemClickListener != null) { itemClickListener.itemClick(position); } } }); if (isHeader(position)) { ((HeaderViewHolder)viewHolder).getTextView().setText(""+Math.round(Float.parseFloat(dataLists.get(0).getValue().get(0).getValue().toString()))+"℃ "); String icon = HenderData.getkwrIcon(); }else { //其他条目中的逻辑在此 ((BodyViewHolder) viewHolder).getValue().setText(""+(double)Math.round( Double.parseDouble(dataLists.get(position - 1).getValue().get(position - 1).getValue().toString())*100)/100); ((BodyViewHolder) viewHolder).getName().setText(""+dataLists.get(position - 1).getDevice().getSensor()); String icon = dataLists.get(position - 1).getDevice().getSensor() ; } } /** * 总条目数量是数据源数量+1,因为我们有个Header * @return */ @Override public int getItemCount() { return dataLists.size() + 1; } /** * * 复用getItemViewType方法,根据位置返回相应的ViewType * @param position * @return */ @Override public int getItemViewType(int position) { //如果是0,就是头,否则则是其他的item return isHeader(position) ? ITEM_VIEW_TYPE_HEADER : ITEM_VIEW_TYPE_ITEM; } /** * 给头部专用的ViewHolder,大家根据需求自行修改 */ public class HeaderViewHolder extends RecyclerView.ViewHolder { private TextView textView; private ImageView kwr_icon ; public HeaderViewHolder(View itemView) { super(itemView); kwr_icon = (ImageView) itemView.findViewById(R.id.kwr_icon); textView = (TextView) itemView.findViewById(R.id.kwr_degrees); } public TextView getTextView() { return textView; } public ImageView getImageView(){ return kwr_icon ; } } /** * 给GridView中的条目用的ViewHolder,里面只有一个TextView */ public class BodyViewHolder extends RecyclerView.ViewHolder { private TextView kwr_name; private ImageView kwr_img ; private TextView kwr_value ; private LinearLayout kwr_linear; public BodyViewHolder(View itemView) { super(itemView); kwr_name = (TextView) itemView.findViewById(R.id.kwr_name); kwr_img = (ImageView) itemView.findViewById(R.id.kwr_img); kwr_value = (TextView) itemView.findViewById(R.id.kwr_value); kwr_linear = (LinearLayout)itemView.findViewById(R.id.kwr_linear); } public TextView getName() { return kwr_name; } public TextView getValue(){ return kwr_value ; } public ImageView getImg(){ return kwr_img ; } public LinearLayout getKwr_linear(){return kwr_linear;} } public interface ItemClickListener { void itemClick(int position); } ItemClickListener itemClickListener; public void setItemClickListener(ItemClickListener itemClickListener) { this.itemClickListener = itemClickListener; } //自定义删除item方法 public void itemRemove(int position) { dataLists.remove(position); notifyItemRemoved(position); } }
RecyclerView-Head and Body
猜你喜欢
转载自blog.csdn.net/u013255337/article/details/79899394
今日推荐
周排行