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" />
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; }}
阅读全文
0 0
- GirdView的学习
- Girdview的使用
- android-----GirdView的使用
- Android网格布局(GirdView)学习
- girdview删除功能的实现
- girdview删除确认的实现
- GirdView的几种使用方法
- girdview的光棒效果
- GirdView 的应用与使用
- GirdView添加链接的方法
- ListView +Girdview 的一个列表
- 有关GirdView使用的几个小技巧!
- girdview分组,统计,排序的解决方案
- 如何获取girdview里的值
- girdview中最简单的ITemplate
- girdview分组,统计,排序的解决方案
- girdview分组,统计,排序的解决方案
- ASP.NET中GirdView控件的详解
- 发表在 Science 上的一种新聚类算法
- Crazy Learning for Day 18
- Java单例模式在多线程环境下的性能测试对比实验分析
- Leetcode 461. Hamming Distance
- 自定义View,自定义Switch样式
- GirdView的学习
- 《MNIST学习》读取数据
- Codeforces Round #423 (Div. 2) A&&B&& C
- 利用Bilibili的开源库ijkplayer实现视频直播
- 【Android日记】Mocky生成模拟接口,Postman模拟接口请求
- [LeetCode] 217. Contains Duplicate
- CodeForces 623B【质因子预处理+DP】
- Windows gnuplot 画图教程
- 各地特色美食与点菜的艺术