Android通过实现GridView的横向滚动实现仿京东秒杀效果

实现GridView的横向滚动

效果如下图:

Android通过实现GridView的横向滚动实现仿京东秒杀效果_第1张图片

具体实现的代码

•1. 主界面布局代码:activity_main.xml



  
    
      
      
    
  

•2.主界面GridView列表子项布局文件:item_homepage_hor_grid.xml



  
    
      
    
    
    
      
      
    
  

•3.  java实现代码:MainActivity.java

           首先是Javabean

public class HomePageJrTjTwoBean {
  private int img;
  private String title;
  private String old_price;
  private String price;
  public int getImg() {
    return img;
  }
  public void setImg(int img) {
    this.img = img;
  }
  public String getTitle() {
    return title;
  }
  public void setTitle(String title) {
    this.title = title;
  }
  public String getPrice() {
    return price;
  }
  public void setPrice(String price) {
    this.price = price;
  }
  public String getOld_price() {
    return old_price;
  }
  public void setOld_price(String old_price) {
    this.old_price = old_price;
  }
}

Activity代码

public class MainActivity extends Activity {
  //横向GridView 
  @BindView(R.id.home_grid)
  GridView home_grid;
  // 数据源
  private List relist = new ArrayList<>();
  private CommonAdapters re_adapter = null;
  private List listData_two = new ArrayList<>();
  private int[] jrtj_two = new int[]{R.mipmap.home_jrtj_sp_1, R.mipmap.home_jrtj_sp_2, R.mipmap.home_jrtj_sp_3, R.mipmap.home_jrtj_sp_3, R.mipmap.home_jrtj_sp_3};//今日特价横向数据
  private String[] sp_name = new String[]{"老板(Roba1m)大吸力免 拆洗触控侧吸式...", "老板(Roba1m)大吸力免 拆洗触控侧吸式...", "老板(Roba1m)大吸力免 拆洗触控侧吸式...", "老板(Roba1m)大吸力免 拆洗触控侧吸式...", "老板(Roba1m)大吸力免 拆洗触控侧吸式..."};
  private String[] price = new String[]{"¥5517", "¥5517", "¥5517", "¥5517", "¥5517"};
  private String[] hua_price = new String[]{"¥8888", "¥8888", "¥8888", "¥8888", "¥8888"};
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //自己造的假数据,实际开发中从后台获取,再去刷新Grid的适配器,调用 re_adapter.notifyDataSetChanged();
     for (int i = 0; i < jrtj_two.length; i++) {
      HomePageJrTjTwoBean homePageJrTjTwoBean = new HomePageJrTjTwoBean();
      homePageJrTjTwoBean.setImg(jrtj_two[i]);
      homePageJrTjTwoBean.setTitle(sp_name[i]);
      homePageJrTjTwoBean.setPrice(price[i]);
      homePageJrTjTwoBean.setOld_price(hua_price[i]);
      listData_two.add(homePageJrTjTwoBean);
    }
    //初始化横向的GridView
    initHorGridView();
  }
  private void initHorGridView() {
    int listSize = relist.size();
    int wm = TUtil.getScreenWidth(getActivity());
    int itemWidth = DisplayUtil.dip2px(getActivity(), 120);
    int horizontalSpacing = DisplayUtil.dip2px(getActivity(), 10);
    int allWidth = (int) ((listSize) * (itemWidth + horizontalSpacing));
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(allWidth,
      LinearLayout.LayoutParams.WRAP_CONTENT);
    homepage_hor_grid.setLayoutParams(params);
    homepage_hor_grid.setColumnWidth(itemWidth);
    homepage_hor_grid.setNumColumns(listSize);
    homepage_hor_grid.setHorizontalSpacing(1);
    re_adapter = new CommonAdapters(getActivity(), relist, R.layout.item_homepage_hor_grid) {
      @Override
      public void convert(ViewHolders holder, QgitemBean datas) {
       //商品图片
      ImageView home_page_jrtj_img = holder.getView(R.id.home_page_jrtj_img);
      //商品标题
      TextView home_page_jrtj_tv_title = holder.getView(R.id.home_page_jrtj_tv_title);
      //商品价格
      TextView home_page_jrtj_tv_price = holder.getView(R.id.home_page_jrtj_tv_price);
      //商品划价
      TextView home_page_jrtj_tv_huajia = holder.getView(R.id.home_page_jrtj_tv_huajia);
      home_page_jrtj_tv_huajia.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);//设置划价
      home_page_jrtj_img.setImageResource(datas.getImg());
      home_page_jrtj_tv_title.setText(datas.getTitle());
      home_page_jrtj_tv_price.setText(datas.getPrice());
      home_page_jrtj_tv_huajia.setText(datas.getOld_price());
      }
    };
    home_grid.setAdapter(re_adapter);
  }
}

适配器

public abstract class CommonAdapters extends BaseAdapter {
  protected Context mContext;
  protected List mDatas;
  protected LayoutInflater mInflater;
  protected int layoutId;
  private int mCurPosition = 0;
  public int getCurPosition() {
    return mCurPosition;
  }
  public void setCurPosition(int mCurPosition) {
    this.mCurPosition = mCurPosition;
  }
  public CommonAdapters(Context context, List datas, int layoutId)
  {
    this.mContext = context;
    mInflater = LayoutInflater.from(context);
    this.mDatas = datas;
    this.layoutId = layoutId;
  }
  public CommonAdapters(Context mContext, T xx, int item_home_list_in) {
    this.mContext = mContext;
    mInflater = LayoutInflater.from(mContext);
    this.mDatas = (List) xx;
    this.layoutId = item_home_list_in;
  }
  public void upDataList(List datas)
  {
    if (null == datas)
      return;
    if (mDatas != datas) {
      mDatas.clear();
      mDatas.addAll(datas);
    }
    notifyDataSetChanged();
  }
  @Override
  public int getCount()
  {
    if (null == mDatas)
      return 0;
    return mDatas.size();
  }
  @Override
  public T getItem(int position)
  {
    return mDatas.get(position);
  }
  @Override
  public long getItemId(int position)
  {
    return position;
  }
  @Override
  public View getView(int position, View convertView, ViewGroup parent)
  {
    ViewHolders holder = ViewHolders.get(mContext, convertView, parent,
        layoutId, position);
    convert(holder, getItem(position));
    return holder.getConvertView();
  }
  public abstract void convert(ViewHolders holder, T datas);
}

总结

以上所述是小编给大家介绍的Android通过实现GridView的横向滚动实现仿京东秒杀效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

你可能感兴趣的:(Android通过实现GridView的横向滚动实现仿京东秒杀效果)