【Android】GridView

本来是想弄一下倒计时的,但参考了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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个简单的Android GridView教程。 GridView是一个用于Android应用程序中显示网格数据的视图组件。GridView类似于ListView,但它可以显示多列数据,而ListView只能显示单列数据。GridView的每个单元格可以包含文本,图像或其他视图组件。 以下是使用GridView显示图像的步骤: 1. 创建一个新的Android项目并在布局文件中添加GridView组件。 2. 创建一个新的适配器类,并将其扩展为BaseAdapter类,然后实现必要的方法。 3. 在适配器类中,定义一个数组以存储要显示的图像资源的ID。 4. 在getView()方法中,获取指定位置的图像资源ID,并将其设置为ImageView组件的源。 5. 在MainActivity.java中,获取GridView组件的引用,并将其设置为适配器。 6. 运行应用程序并查看GridView中显示的图像。 以下是示例代码: ```java public class ImageAdapter extends BaseAdapter { private Context mContext; //定义一个数组以存储要显示的图像资源ID private Integer[] mThumbIds = { R.drawable.image1, R.drawable.image2, R.drawable.image3, R.drawable.image4, R.drawable.image5, R.drawable.image6, R.drawable.image7, R.drawable.image8, R.drawable.image9, R.drawable.image10 }; public ImageAdapter(Context c) { mContext = c; } public int getCount() { return mThumbIds.length; } public Object getItem(int position) { return null; } public long getItemId(int position) { return 0; } // 在getView()方法中,获取指定位置的图像资源ID,并将其设置为ImageView组件的源 public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; if (convertView == null) { imageView = new ImageView(mContext); imageView.setLayoutParams(new GridView.LayoutParams(250, 250)); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setPadding(8, 8, 8, 8); } else { imageView = (ImageView) convertView; } imageView.setImageResource(mThumbIds[position]); return imageView; } } ``` 在MainActivity.java中: ```java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取GridView组件的引用 GridView gridView = findViewById(R.id.grid_view); // 将适配器设置为GridView gridView.setAdapter(new ImageAdapter(this)); } } ``` 以上就是一个简单的Android GridView教程。希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值