GirdView的学习

来源:互联网 发布:大数据 书 编辑:程序博客网 时间:2024/05/16 08:03

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;    }}

这里写图片描述