Android引入布局 GridView实现ImageView+TextView
来源:互联网 发布:apache安装包下载地址 编辑:程序博客网 时间:2024/05/17 15:03
GridView实现ImageView+TextView
关键思路:自定义Adapter继承BaseAdapter。重写getView方法。
- 在activity_main.xml中写一个GridView
<GridView android:id="@+id/gv_item" android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="auto_fit" android:columnWidth="96dp" android:verticalSpacing="12dp" android:horizontalSpacing="12dp" android:stretchMode="columnWidth" android:gravity="center"></GridView>
- 在layout中写一个grid_item.xml,显示ImageView+TextView
<?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" android:orientation="vertical"> <ImageView android:id="@+id/iv_icon" android:layout_gravity="center" android:layout_width="90dp" android:layout_height="90dp" /> <TextView android:id="@+id/tv_title" android:layout_gravity="center" android:gravity="center" android:singleLine="true" android:layout_width="90dp" android:layout_height="wrap_content" /></LinearLayout>
- 写一个javabean来表示要显示的数据GridInfo.c
public class GridInfo { private Drawable appIcon; private String title; private String packageName; public GridInfo(Drawable appIcon,String title,String packageName) { this.appIcon = appIcon; this.title = title; this.packageName = packageName; } public Drawable getAppIcon() { return appIcon; } public String getTitle() { return title; } public String getPackageName() { return packageName; }}
- 自定义Adapter继承BaseAdapter
public class GridItemAdapter extends BaseAdapter{ private List<GridInfo> mGridInfoList; //定义数据类 private LayoutInflater mInflater; //定义Inflater public GridItemAdapter(Context context, List<GridInfo> gridInfoList){ mGridInfoList = gridInfoList; mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } public int getCount() { return mGridInfoList.size(); } public Object getItem(int position) { return mGridInfoList.get(position); } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = new ViewHolder(); if(convertView==null){ convertView = mInflater.inflate(R.layout.grid_item,null); viewHolder.iv = (ImageView) convertView.findViewById(R.id.iv_icon); viewHolder.tv = (TextView) convertView.findViewById(R.id.tv_title); convertView.setTag(viewHolder); }else{ viewHolder = (ViewHolder) convertView.getTag(); } //设置holder GridInfo mGridInfo = mGridInfoList.get(position); viewHolder.iv.setImageDrawable(mGridInfo.getAppIcon()); viewHolder.tv.setText(mGridInfo.getTitle()); return convertView; } private class ViewHolder{ ImageView iv; TextView tv; }}
- MainActivity显示数据
public class MainActivity extends AppCompatActivity { GridView mGridView; GridInfo mGridInfo; List<GridInfo> mGridInfoList; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActionBar actionBar = getSupportActionBar(); actionBar.hide(); setContentView(R.layout.activity_main); init(); initView(); } //初始化数据 private void init() { Intent mainInent = new Intent(Intent.ACTION_MAIN,null); mainInent.addCategory(Intent.CATEGORY_LAUNCHER); List<ResolveInfo> resolveInfos = getPackageManager().queryIntentActivities(mainInent, 0); mGridInfoList = new ArrayList(); for(ResolveInfo resolveInfo:resolveInfos){ Drawable icon = resolveInfo.activityInfo.loadIcon(getPackageManager()); String title = resolveInfo.activityInfo.loadLabel(getPackageManager()).toString(); String packageName = resolveInfo.activityInfo.packageName; mGridInfo = new GridInfo(icon, title, packageName); mGridInfoList.add(mGridInfo); } } //显示数据 private void initView() { mGridView = (GridView) findViewById(R.id.gv_item); GridItemAdapter mAdapter = new GridItemAdapter(this,mGridInfoList); mGridView.setAdapter(mAdapter); }}
- 显示效果如下
1 0
- Android引入布局 GridView实现ImageView+TextView
- Android布局优化之TextView、ImageView合二为一
- Android 实现不规则ImageView布局
- android实现TextView、ImageView等按压效果
- GridView中 的ImageView TextView
- Android 开源项目android-open-project解析之(二) GridView,ImageView,ProgressBar,TextView
- android 关于线程更新UI控件,包括gridview,textview,imageview等
- 使用TextView实现ImageView效果
- Android.GridView实现宫式布局
- android imageview布局问题
- android imageview布局问题
- Android ImageView和TextView居中
- 【幻化万千戏红尘】qianfeng-Android-Day02-RelativeLayout布局、TextView、EditText、imageView基础学习
- Android笔记:GridView与ImageView
- 【Android】39、引入布局
- android在Gridview实现Textview跑马灯效果
- Android布局相关&&ImageView.scaleType
- Android中TextView通过换行实现条目布局
- 欢迎使用CSDN-markdown编辑器
- Spring4 条件注解@Conditional
- css实现三角形
- Hdoj1009 FatMouse' Trade
- HTTP Header中的ETag
- Android引入布局 GridView实现ImageView+TextView
- Java Socket 通信 (五)
- 将某个表中存在重复列名的项的某列值改为同一值
- MAC下Cornerstone错误异常导致奔溃
- sql删除表清除表数据修改表结构
- Java的行走之路
- python环境搭建
- easyui-accordion title无法绑定onclick事件解决方法
- VL09 不能取消来自分散系统的货物移动