GirdView的学习

GirdView的一些属性
columnWidth(每列的宽度)
numColunms=”auto_fit”(列数根据屏幕大小自适应)
verticalSpacing(垂直方向的间距)
horizontalSpacing(水平方向的间距)

Demo1:显示文字

public class ExampleActivity1 extends AppCompatActivity{

    public GridView mGridView;
    @Override
    public void onCreate( Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_example1);
        mGridView = (GridView)findViewById(R.id.grid_view);
        //准备数据
        List<String> data = new ArrayList<>();
        for (int i = 0; i < 9; i++) {
            data.add("aaaaa"+i);
        }
        //准备适配器   android.R.layout.simple_list_item_1 系统提供的简单条目布局
        ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,data);

        //设置Adapter
        mGridView.setAdapter(adapter);
    }
}



Xml
   <GridView
        android:id="@+id/grid_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:columnWidth="10dp"
        android:numColumns="3"
        android:verticalSpacing="10dp"
        android:horizontalSpacing="10dp"
        android:stretchMode="columnWidth"
        />

例子1


Demo2:显示应用列表

这里面几个重要的方法:
//获取系统应用信息
PackageManager packageManager = getPackageManager();
List installedPackages = packageManager.getInstalledPackages(0);
//获取包的所有信息
PackageInfo packageInfo = installedPackages.get(i);
再挨个遍历获取信息
这是第二种获取应用信息的方法,第一种在ListView学习里有写。

  if((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)==0){//判断不为系统应用                //则添加到数据集合
            appInfoList.add(info);
        }
public class ExampleActivity2 extends AppCompatActivity {

    private GridView mGridVoid;
    private List<AppInfo> appInfoList;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_example1);
        mGridVoid = (GridView)findViewById(R.id.grid_view);

        //准备数据
        getAppInfos();
        //准备适配器
        mGridVoid.setAdapter(new MyGridViewAdapter(ExampleActivity2.this,appInfoList));
    }

    //GridView数据源
    public List<AppInfo> getAppInfos() {
        appInfoList = new ArrayList<>();
        //获取系统应用信息
        PackageManager packageManager = getPackageManager();
        List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);

        for (int i = 0; i <installedPackages.size(); i++) {
            AppInfo info = new AppInfo();
            //获取包的所有信息
            PackageInfo packageInfo = installedPackages.get(i);
            //获取包信息里的应用名称
            info.setAppName(packageInfo.applicationInfo.loadLabel(packageManager).toString());
            //获取包图片
            info.setAppIcon(packageInfo.applicationInfo.loadIcon(packageManager));
            //获取包名
            info.setAppPackageName(packageInfo.packageName);
            //获取版本号
            info.setAppVersionCode(packageInfo.versionCode);
            //获取版本信息
            info.setAppVersionInfo(packageInfo.versionName);
            //添加到集合
//            appInfoList.add(info);
            if((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)==0){//判断不为系统应用
                //则添加到数据集合
                appInfoList.add(info);
            }
        }
        return appInfoList;
    }
}
class MyGridViewAdapter extends BaseAdapter{
    private Context context;
    private List<AppInfo> appInfoList = new ArrayList<>();

    public MyGridViewAdapter(Context context, List<AppInfo> appInfoList) {
        this.context = context;
        this.appInfoList = appInfoList;
    }

    @Override
    public int getCount() {
        return appInfoList.size();
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder  holder = new ViewHolder();
        if(convertView == null){
            convertView = View.inflate(context,R.layout.item_example2,null);
            holder.appIcon = (ImageView)convertView.findViewById(R.id.img_icon);
            holder.appName = (TextView)convertView.findViewById(R.id.tv_name);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }

        holder.appName.setText(appInfoList.get(position).getAppName()+"....."+appInfoList.get(position).getAppVersionInfo());
        holder.appIcon.setImageDrawable(appInfoList.get(position).getAppIcon());
        return convertView;
    }


    //准备ViewHolder
    class ViewHolder {
        private ImageView appIcon;
        private TextView appName;
    }

}

这里写图片描述


demo3 网络加载

public class ExampleActivity3 extends AppCompatActivity {

    private GridView gridView;
    private List<String> imgList;
    private List<ImageInfo>imageInfoList;
    private GridAdapter3 gridAdapter;
    private ImageLoadTask imageLoadTask;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_example1);
        initUi();
        initData();

    }

    private void initData() {
        imgList=new ArrayList<String>();
        imgList.add("http://img5.duitang.com/uploads/item/201406/26/20140626164837_dzKds.jpeg");
        imgList.add("http://img2.imgtn.bdimg.com/it/u=3980629563,3881837630&fm=21&gp=0.jpg");
        imgList.add("http://img5q.duitang.com/uploads/item/201505/08/20150508155052_XJaNW.jpeg");
        imgList.add("http://img4.duitang.com/uploads/item/201407/02/20140702105736_FdN5P.jpeg");
        imgList.add("http://img2.imgtn.bdimg.com/it/u=2866652161,3841912673&fm=21&gp=0.jpg");
        imgList.add("http://img4.imgtn.bdimg.com/it/u=883757693,2063816225&fm=21&gp=0.jpg");
        imgList.add("http://cdn.duitang.com/uploads/item/201309/26/20130926110955_QtUdX.jpeg");
        imgList.add("http://zjimg.5054399.com/allimg/160815/14_160815161625_9.jpg");
        imgList.add("http://i-7.vcimg.com/trim/09ce7067d2467c54cf05bbd271ee3ec8430415/trim.jpg");
        imageInfoList=new ArrayList<ImageInfo>();
        for(int i=0;i<9;i++)
        {
            ImageInfo imageInfo=new ImageInfo();
            imageInfo.setmUrl(imgList.get(i));
            imageInfo.setmText("图片"+i);
            imageInfoList.add(imageInfo);
        }
        gridAdapter=new GridAdapter3(this,imageInfoList);
        gridView.setAdapter(gridAdapter);
        imageLoadTask =new ImageLoadTask(this,gridAdapter);
        imageLoadTask.execute();

    }

    private void initUi() {
        gridView= (GridView) findViewById(R.id.grid_view);
    }



    public Bitmap getImagefromNetWork(String path)
    {
        try {

            URL url=new URL(path);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setDoInput(true);
            urlConnection.setConnectTimeout(10*1000);
            urlConnection.connect();
            InputStream inputStream = urlConnection.getInputStream();
            Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
            inputStream.close();
            return bitmap;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;

    }


    public class ImageLoadTask extends AsyncTask<String,Void,Void>
    {

        private GridAdapter3 gridAdapter;
        public ImageLoadTask(Context context,GridAdapter3 gridAdapter)
        {
            this.gridAdapter=gridAdapter;
        }

        @Override
        protected Void doInBackground(String... params) {

            for(int i=0;i<gridAdapter.getCount();i++)
            {
                ImageInfo imageInfo= (ImageInfo) gridAdapter.getItem(i);
                String imagePath = imageInfo.getmUrl();
                Bitmap bitmap = getImagefromNetWork(imagePath);
                imageInfo.setmBitmap(bitmap);
                publishProgress();
            }


            return null;
        }



        @Override
        protected void onProgressUpdate(Void... values) {
            super.onProgressUpdate(values);
            Log.e("Main","刷新");
            gridAdapter.notifyDataSetChanged();

        }
    }


}
public class GridAdapter3 extends BaseAdapter {
    private Context context;
    private List<ImageInfo> imageInfoList;

    public GridAdapter3(Context context, List<ImageInfo> imageInfoList) {
        this.imageInfoList = imageInfoList;
        this.context = context;
    }

    @Override
    public int getCount() {
        return imageInfoList.size();
    }

    @Override
    public Object getItem(int position) {
        return imageInfoList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolder holder;
        if (convertView == null) {
            convertView = View.inflate(context, R.layout.item_example2, null);
            holder = new ViewHolder();
            holder.imageView = (ImageView) convertView.findViewById(R.id.img_icon);
            holder.textView = (TextView) convertView.findViewById(R.id.tv_name);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        ImageInfo imageInfo = imageInfoList.get(position);
        holder.textView.setText(imageInfo.getmText());


//        Glide.with(context).load(imageInfo.getmUrl()).placeholder(R.mipmap.ic_launcher).centerCrop().into(holder.imageView);

        if(imageInfo.getmBitmap()==null)
        {
          holder.imageView.setImageResource(R.mipmap.ic_launcher);
        }
        else
        {
            holder.imageView.setImageBitmap(imageInfo.getmBitmap());
        }

        return convertView;
    }


    public class ViewHolder {
        ImageView imageView;
        TextView textView;
    }
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值