【Android】GridView
来源:互联网 发布:阿里云控制平台 编辑:程序博客网 时间:2024/06/13 08:03
本来是想弄一下倒计时的,但参考了http://blog.csdn.net/androidforme/article/details/49278181的文章后,顺便学会了GridView,也是一个非常简单的东西,ListView是多行单列,这个是多行多列
实现的效果:
先新建一个工程,然后在activity_main.xml中写入如下内容:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <GridView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/id_grid_view" android:numColumns="2"><!--两列--> </GridView></LinearLayout>
在MainActivity 中,先定义写一个适配器
(凡是列表,核心一定是适配器,所以先看适配器)
public class MainActivity extends Activity { private List<String> list; private class MyAdapter extends BaseAdapter { public int getCount() { return list.size(); } public Object getItem(int position) { return null; } public long getItemId(int position) { return 0; } @Override public View getView(int i, View view, ViewGroup viewGroup) { if (view==null){ view= LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.d,null); } TextView tv=view.findViewById(R.id.tv); String time=list.get(i); Date curDate = new Date(System.currentTimeMillis());//获取当前的系统时间 long cur = curDate.getTime();//获取当前时间的毫秒值 long t; try { t = time2millionSeconds(time);//把要设置的时间装换成毫秒 String ts = time2time(t - cur);//设置的毫秒减去当前的毫秒,并转换为时分秒 tv.setText(ts);//每秒设置一次 } catch (ParseException e) { e.printStackTrace(); } return view; } }}
子项文件d.xml如下
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv"/></LinearLayout>
两个方法如下,可以直接复制(这个帖子提供的方法比较老,要玩倒计时可以搜索一下DownCountTimer)
public class MainActivity extends Activity { public String time2time(long t) { if (t<= 0) { return "00时:00分:00秒:000"; } //long ms = t % 1000; long s = t / 1000 % 60; long min = t / 1000 / 60 % 60; long h = t / 1000 / 60 / 60; return h + "时:" + min + "分:" + s + "秒"; } public long time2millionSeconds(String str) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd/HH:mm:ss");//把设置的时间转换成时间格式 long millionSeconds = sdf.parse(str).getTime();//把要设置的时间转换成ms return millionSeconds; }}
适配器做好了以后,使用一系列init方法来配置到GridView中
public class MainActivity extends Activity { private List<String> list; private GridView mGridView; private MyAdapter adapter; private Handler mHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); initEvent(); }}
主要还是看初始化数据这一块
public class MainActivity extends Activity { private void initView(){ mGridView=findViewById(R.id.id_grid_view); } private void initData(){ list = new ArrayList<>(); list.add("2017/09/20/12:59:59");//设置的定时时间 list.add("2017/09/20/12:59:59"); list.add("2017/09/20/12:59:59"); list.add("2017/09/20/12:59:59"); list.add("2017/09/20/12:59:59"); list.add("2017/09/20/12:59:59"); list.add("2017/09/20/12:59:59"); list.add("2017/09/20/12:59:59"); adapter = new MyAdapter(); mHandler = new Handler() { public void handleMessage(android.os.Message msg) { adapter.notifyDataSetChanged(); mHandler.sendEmptyMessageDelayed(1, 10); }; }; } private void initEvent(){ mGridView.setAdapter(adapter); mHandler.sendEmptyMessageDelayed(1, 1); }}
运行后即可得到上面的效果
阅读全文
0 0
- android GridView
- Android GridView
- Android:GridView
- Android GridView
- Android GridView
- Android GridView
- Android GridView
- Android:GridView
- 【Android】GridView
- android GridView控件嵌套GridView
- Android GridView的使用
- Android layout - GridView
- Android 控件之GridView
- Android 控件之GridView
- Android的GridView使用
- Android GridView选择样式
- android控件15 GridView
- Android GridView使用
- Error:Cause: greenDAO supports only Java and Android projects. None of the corresponding plugins hav
- android 主页底部菜单tab切换标签
- 解决重启apache服务失败--xampp
- 顺序表应用3:元素位置互换之移位算法
- 浅谈代码定义变量顺序对评测结果的影响
- 【Android】GridView
- 随便一写
- CCF —俄罗斯方块 20160402
- AsyncTask源码探索
- 图解TCP/IP读书笔记(四):IP协议
- 第三周【项目2
- Linux终端访问Linux服务器
- CCF—节日 20150303
- HDU6214 Smallest Minimum Cut 最小割/最少边 [2017 ACM/ICPC Asia Regional Qingdao Online]