添加图书布局文件

前面,我们已经做好了一个书架,这里,我们首先为书架添加一些书籍。因为书架本身是Grid View,所以每一本书就是GridView的一个item,那么首先,我们要对这个item进行布局:

添加好之后就会进入到布局设计界面,然后拖一个Text View到主界面上来:

这里可能会有点疑惑,因为我们要做的只是一个item的局部布局,但是预览界面展示的却是整个屏幕。这里,我们忽略其他,只着眼于我们新加的这个线性布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/id_book_item"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical"><TextView
        android:id="@+id/id_book_item_cover"android:layout_width="90dp"android:layout_height="0dp"android:layout_marginTop="85dp"android:layout_weight="1"android:text="TextView"android:textAlignment="center"android:textColor="#000" />
</LinearLayout>

需要注意的是,TextView默认加了一个android:layout_weight=”1”,这里需要将android:layout_height设置为0,不然会有警告。

预览效果:

为书架添加模拟数据

这里我添加了32条模拟数据,包含背景图和文字:

private GridView bookShelf;private int[] data = {R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt,R.drawable.cover_txt};private String[] name={"book1","book2","book3","book4","book5","book6","book7","book8","book9","book10","book11","book12","book13","book14","book15","book16","book17","book18","book19","book20","book21","book22","book23","book24","book25","book26","book27","book28","book29","book30","book31","book32"};

添加GridView的Adapter

class ShelfAdapter extends BaseAdapter {@Overridepublic int getCount() {return data.length;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {convertView= LayoutInflater.from(getApplicationContext()).inflate(R.layout.layout_book_item, null);TextView view=(TextView) convertView.findViewById(R.id.id_book_item_cover);if(data.length>position){if(position<name.length){view.setText(name[position]);}view.setBackgroundResource(data[position]);}else{view.setBackgroundResource(data[0]);view.setClickable(false);view.setVisibility(View.INVISIBLE);}return convertView;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic Object getItem(int position) {return position;}}

这里为了方便使用数据,我将ShelfAdapter嵌套进了MainActivity中。

显示图书项

这里首先我们发现,忘记给bookshelf添加id了,加上:

然后我们就可以写代码了:

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);bookShelf = (GridView) findViewById(R.id.bookshelf);ShelfAdapter adapter=new ShelfAdapter();bookShelf.setAdapter(adapter);bookShelf.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stubif(arg2>=data.length){}else{Toast.makeText(getApplicationContext(), ""+ arg2 +arg3, Toast.LENGTH_LONG).show();}}});}

调整书架项目布局

为书架视图添加如下属性:

<com.demo.taoguan.BookShelfandroid:id="@+id/bookshelf"android:layout_width="0dp"android:layout_height="0dp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"android:columnWidth="90dp"android:numColumns="auto_fit"android:horizontalSpacing="20dp"android:verticalSpacing="20dp"/>

运行效果:

Android入门4--做一个书架(续)相关推荐

  1. Android辅助H5做一个Web版的相册功能

    主要是两个功能,返回相册列表给H5,和选中图片. 1.获取相册列表用伪造的图片http url,让H5容器先拿到列表,然后在img请求具体图片的时候使用shouldInterceptRequest拦截 ...

  2. 【pyqt5】【无敌基础的入门】做一个简单的图像显示器(完整代码+完整注释+封装)

    文章目录 学习目录 一个Demo的制作 1.用Designer直接画图 2.编辑.py实现函数功能 call_trans.py trans.py 界面展示 3.封装成exe 从安装到查资料(Debug ...

  3. Android实践:做一个可视频交互的智能小车

    本文的三位作者正阳.海洋.阿力,是来自不同公司的工程师,在Agora RTC Hack 上海站编程马拉松上,开发了一款可实时视频远程看房的智能小车.本文将从方案设计.硬件开发.Android 端开发. ...

  4. Android实例,做一个微信好友列表,列表视图应用

    效果是这样的:可实现上下拖动查询好友,点击好友会弹出好友名字. activity_main.xml文件: 顶部偷懒可用图片代替. <?xml version="1.0" en ...

  5. Android平台上做一个完美的音乐频谱--Music Audio Glow

    一直在网上寻找一个做得比较好的音乐的频谱,始终未能找到一个很合适自己用的音乐频谱,后面实在没办法,就自己研究着做了,基本实现的功能有: 1.能够修改频谱柱子的图案 2.能够修改整个软件的颜色,包括:频 ...

  6. Android入门:实现一个File存储的辅助类

    File文件存储博客链接:http://blog.csdn.net/xiazdong/article/details/7687439 package com.xiazdong.file.util;im ...

  7. Android入门:封装一个HTTP请求的辅助类

    前面的文章中,我们曾经实现了一个HTTP的GET 和 POST 请求: 此处我封装了一个HTTP的get和post的辅助类,能够更好的使用: 类名:HttpRequestUtil 提供了如下功能: ( ...

  8. WebGIS入门--如何做一个简单的校园地图服务网站

    目录 OpenLayer库的配置 在HTML中调用 在JavaScript文件中调用 OpenLayer基础操作 显示地图(天地图API) 百度地图API与天地图API 坐标系转换之百度地图 坐标系转 ...

  9. Android实训做一个QQ的代码,腾讯2018安卓实习模拟笔试题——小Q硬币组合

    为什么每次看到这种题的超简短解题代码都会有一种"哇!"的感觉 题意 小Q非常富有,拥有非常多的硬币,小Q的拥有的硬币是有规律的,对于所有的非负整数K,小Q恰好各有两个数值为2^k的 ...

  10. 【精品示例】超实用Python爬虫入门实例——做一个优质舔狗

    引言 最近发现了一个有意思的网站,里面充斥了大量的舔狗箴言.作为一个爬虫发烧友怎么能错过此等机会,咱们直接就是上才艺! 类的编写 本次爬虫使用了多协程的方案进行,保证了爬虫的速度.在这里我们新建一个爬 ...

最新文章

  1. ubuntu安装vmware(支持mac)与卸载
  2. Activiti与Spring的整合
  3. easyui数据请求两个url_easyui使用是调用两次后台请求(解决)
  4. 使用Akka处理1000万条消息
  5. 前端学习(2831):小程序事件绑定
  6. 突变检测软件 测试数据库,测序数据比对和变异检测
  7. EasyUI的简单介绍
  8. python压缩算法_用python实现LZ78压缩算法
  9. 具体问题具体分析 之 QA票
  10. python是什么语言-python底层是什么语言
  11. vs2008 jquery 智能提示
  12. cpu_time()函数
  13. 基于Eclipse+Java+Swing+Mysql实现旅游管理信息系统
  14. 24个希腊字母(符号) 附字母表
  15. 炉石传说---奇迹德/凯子德玩法攻略
  16. css中英文单词换行的问题
  17. ArduPilot 开发手册学习:写在前面
  18. 云服务器系统一键安装,一键安装服务器系统
  19. 总结10款常用的加密混淆软件,
  20. 神经网络是算法还是模型,神经网络 图像相似度

热门文章

  1. 自动咖啡机项目-软件规格说明书
  2. 卫星定位为什么至少需要四颗呢?
  3. 初识Leap motion
  4. Pyplot参数设置
  5. Unity3D-光源组件(Light)详解
  6. id自动编号 php,php根据数据id自动生成编号的实现方法
  7. 同余方程组有解的充要条件
  8. 《算法导论3rd第十三章》红黑树
  9. 百度之星 题一 洞穴
  10. 深度学习3D 人体姿态估计面临的问题和挑战