以下是实现的通过GridView加载广告图片(没有加载文字),上面的“今日推荐”,“更多”字样是通过Layout布局实现的。通过添加监听器,点击每一个图片,并且携带图片的Id进行转跳

这是一个GridView容器,用来放后面的gridview_tuijian_item,包括附加了上面的一个标题行“今日推荐”,“更多”

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="16dp"android:layout_marginRight="16dp"android:background="#ccc" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:text="今日推荐"android:textSize="16sp"android:textStyle="bold" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_centerVertical="true"android:text="更多"android:textColor="#f00"android:textSize="16sp"android:textStyle="bold" /></RelativeLayout><!-- 推荐商品 --><GridViewandroid:id="@+id/home_gridview_tuijian"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="16dp"android:layout_marginRight="16dp"android:columnWidth="75dp"android:horizontalSpacing="4dp"android:numColumns="4"android:stretchMode="spacingWidth"android:verticalSpacing="4dp" ></GridView></LinearLayout>

创建一个gridview_tuijian_item

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><ImageViewandroid:id="@+id/gridview_item_tuijian_iv"android:layout_width="85dp"android:layout_height="75dp" /></LinearLayout>

创建一个GridView适配器GridViewTuijianAdapter:

public class GridViewTuijianAdapter extends BaseAdapter {private Context context;private List<Integer> data;public GridViewTuijianAdapter(Context context, List<Integer> data) {super();this.context = context;this.data = data;}@Overridepublic int getCount() {return data.size();}@Overridepublic Object getItem(int position) {return data.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder = null;if (convertView == null) {convertView = LayoutInflater.from(context).inflate(R.layout.gridview_tuijian_item, null);holder = new ViewHolder();holder.iv = (ImageView) convertView.findViewById(R.id.gridview_item_tuijian_iv);convertView.setTag(holder);// 如果convertView为空就 把holder赋值进去} else {holder = (ViewHolder) convertView.getTag();// 如果convertView不为空,那么就在convertView中getTag()拿出来}Integer current = data.get(position);holder.iv.setImageResource(current);return convertView;}static class ViewHolder {ImageView iv;}
}

由于这些BOLG内容都是源自一个项目的每一个知识点都是经过单独提取出来的,略微包含一些不太相关的内容,比如下面代码中的initAdv(rootView)这个方法以及前面注释中的变量名都是为另一个功能写的:

public class HomeFragment extends Fragment {private View rootView;// ViewPager 广告相关private ViewPager viewPagerAdv;private List<ImageView> advIvs;// 数据源private PagerAdapter advAdapter;// 适配器// ViewPager 广告下方今天推荐商品private List<Integer> tuijian;private GridView gridViewtuijian;private BaseAdapter tuijianAdapter;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {if (null == rootView) {rootView = inflater.inflate(R.layout.fragment_home, container,false);initView(rootView);}ViewGroup parent = (ViewGroup) rootView.getParent();if (null != parent) {parent.removeView(rootView);}return rootView;}private void initView(View rootView) {/* 初始化广告ViewPager */initAdv(rootView);/* 初始化广告下方的今日推荐 */initTuijian(rootView);}/** 今日推荐*/private void initTuijian(View rootView2) {gridViewtuijian = (GridView) rootView.findViewById(R.id.home_gridview_tuijian);// 数据源tuijian = new ArrayList<Integer>();tuijian.add(R.drawable.tuijian1);tuijian.add(R.drawable.tuijian2);tuijian.add(R.drawable.tuijian1);tuijian.add(R.drawable.tuijian2);tuijian.add(R.drawable.tuijian1);tuijian.add(R.drawable.tuijian2);tuijian.add(R.drawable.tuijian1);tuijian.add(R.drawable.tuijian2);// 适配器tuijianAdapter = new GridViewTuijianAdapter(getActivity(), tuijian);// 添加控件适配器gridViewtuijian.setAdapter(tuijianAdapter);// 添加GridView的监听事件gridViewtuijian.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {// 跳转到另一个界面查看商品详细信息Intent intent = new Intent(getActivity(),ProductDetailActivity.class);intent.putExtra("productId", position);//携带参数startActivity(intent);}});}/** 广告* @param 作者*/private void initAdv(View rootView2) {viewPagerAdv = (ViewPager) rootView.findViewById(R.id.home_viewpager_adv);// 构造ViewPager数据源advIvs = new ArrayList<ImageView>();ImageView iv1 = new ImageView(getActivity());iv1.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));iv1.setImageResource(R.drawable.home_adv_1);advIvs.add(iv1);ImageView iv2 = new ImageView(getActivity());iv2.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));iv2.setImageResource(R.drawable.home_adv_2);advIvs.add(iv2);ImageView iv3 = new ImageView(getActivity());iv3.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));iv3.setImageResource(R.drawable.home_adv_3);advIvs.add(iv3);// 初始化适配器对象ViewPager的适配器advAdapter = new ViewPagerAdvAdapter(getActivity(), advIvs);// ViewPager加载适配器viewPagerAdv.setAdapter(advAdapter);// 还可以为ViewPager添加监听}
}

GridView在Fragment中的使用相关推荐

  1. overridePendingTransition 方法在Fragment 中使用

    overridePendingTransition  方法在直接卸载Fragment 中无法识别 这个使用可以在前面添加getActivity 即可使用了 getActivity().override ...

  2. 如何在Fragment中使用findViewById

    findViewById方法却只能被用在Activity类中,如果想在fragment中使用, 需要在findViewById前面 添加getView(); 下面是一段代码, public class ...

  3. Fragment 中使用 getLayoutInflater() 的问题

    问题: 我想在一个Fragment的ListView中显示我的搜索结果 但在这里报错: LayoutInflater inflater = getLayoutInflater(); "The ...

  4. Fragment中调用getActivity为null的问题

    Fragment中调用getActivity为null的问题

  5. Fragment中使用viewLifecycleOwner/getActivity/this

    观察liveData使用生命周期 如图:当liveData想在fragment里观察的时候,可以使用getActivity/this/getViewLifecycleOwner. getActivit ...

  6. Android 在Fragment中执行onActivityResult不被调用的简单解决方法

    Android 在Fragment中执行onActivityResult不被调用的简单解决方法 参考文章: (1)Android 在Fragment中执行onActivityResult不被调用的简单 ...

  7. Android Fragment中嵌套Fragment,不显示view

    原文链接:http://www.jianshu.com/p/e146698482f5 先看一段错误代码,这段代码写在一个 Fragment 中: private void initView(){mVi ...

  8. Android --- 动态获取定位权限时: Fragment 中 onRequestPermissionsResult 方法不执行

    今天我在写百度地图 API 定位功能的时候遇到了这样一个问题,需要在打开 APP 首页的时候动态获取定位权限,然后我的代码是这样写的(在 Fragment 中) @Nullablepublic Vie ...

  9. Android的Fragment中onActivityResult不被调用

    1.检查该Fragment所属的Activity中,是否重写了onActivityResult方法. 2.检查Fragment中的startActivityForResult的调用方式. 请确保不要使 ...

最新文章

  1. windows下apache配置虚拟主机的两个方法
  2. pgsql数据库默认配置事务类型_PostgreSQL基础教程之:初始化配置
  3. 寻找两个字符串相似度的代码
  4. 菲尔兹奖得主舒尔茨没做到的事,现在被计算机证明了
  5. python写魔兽世界脚本_用python bat写软件安装脚本 + HM NIS Edit自动生成软件安装脚本...
  6. 你在京东购买的商品,是怎么出现在抖音里面的?
  7. 中国大学MOOC 计算机组成原理第4章 测试(中)
  8. Telerik Reporting之生成报表
  9. py06-python基础-字典
  10. LS 24 Bracket sequence(DP)
  11. [ECMAScript] 说说你对Babel的了解?
  12. python选课系统作业_Python 大作业4:选课系统
  13. linux下合并两个文件夹
  14. java无法编译加载主类_JAVA编译完毕运行时错误找不到或无法加载主类
  15. 语音识别几成标配,哈弗F7的智能语音系统有何不同?
  16. 贺利坚老师汇编课程55笔记:带进位加法指令ADC
  17. sf上的SIMD的程序库
  18. NIO消息边界问题处理
  19. 树莓派红外火焰传感器
  20. MyBatis 关联查询(一对多 多对一)

热门文章

  1. 6.SpringMVC
  2. PhotoZoom2023专业的图片无损放大软件最新V8版功能介绍
  3. expect 使用方法
  4. 坦克大战C++无敌版
  5. 18 Web开发中的关键监督
  6. 视频存储格式YUV420 NV12 NV21 i420 YV12
  7. 创建可引导的Ubuntu USB闪存盘
  8. 虚拟机修改ip方式(临时+永久)
  9. 二维码识别 基于stm32 ov7725
  10. initrd是什么?