Android BaseAdapter 例子
16lz
2021-01-23
BaseAdapter
public class RecentAdapter extends BaseAdapter {private class RecentViewHolder {TextView appName;ImageView appIcon;TextView appSize;}private List<ResolveInfo> mAppList;private LayoutInflater mInflater;private PackageManager pm;public RecentAdapter(Context c, List<ResolveInfo> appList,PackageManager pm) {mAppList = appList;this.pm = pm;mInflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);}public void clear(){if(mAppList!=null){mAppList.clear();}}public int getCount() {return mAppList.size();}@Overridepublic Object getItem(int position) {return mAppList.get(position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}public View getView(int position, View convertView, ViewGroup parent) {RecentViewHolder holder;if (convertView == null) {convertView = mInflater.inflate(R.layout.app_info_item, null);holder = new RecentViewHolder();holder.appName = (TextView) convertView.findViewById(R.id.app_name);holder.appIcon = (ImageView) convertView.findViewById(R.id.app_icon);holder.appSize = (TextView) convertView.findViewById(R.id.app_size);convertView.setTag(holder);} else {holder = (RecentViewHolder) convertView.getTag();}ResolveInfo appInfo = mAppList.get(position);if (appInfo != null) {String labelName = appInfo.loadLabel(pm).toString();if (labelName != null) {holder.appName.setText(labelName);}Drawable icon = appInfo.loadIcon(pm);if (icon != null) {holder.appIcon.setImageDrawable(icon);}}return convertView;}public void remove(int position){mAppList.remove(position);this.notifyDataSetChanged();}}
其中两个注意点为:
setTag 用View设置存储数据
notifyDataSetChanged() 告诉View数据更改并刷新
View convertView = mInflater.inflate(R.layout.app_info_item, null) 加载XML Item 示图
app_info_item.xml文件示例
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent" android:layout_height="wrap_content"android:layout_gravity="center_vertical" android:minHeight="?android:attr/listPreferredItemHeight"><ImageView android:id="@+id/app_icon" android:layout_width="@android:dimen/app_icon_size"android:layout_height="@android:dimen/app_icon_size"android:layout_alignParentLeft="true" android:paddingLeft="6dip"android:paddingTop="6dip" android:paddingBottom="6dip"android:scaleType="fitCenter" /><TextView android:id="@+id/app_name" android:layout_width="wrap_content"android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge"android:textColor="?android:attr/textColorPrimary"android:layout_toRightOf="@id/app_icon" android:paddingLeft="6dip"android:paddingTop="6dip" /><TextView android:id="@+id/app_description"android:layout_width="wrap_content" android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall"android:layout_below="@+id/app_name" android:layout_toRightOf="@id/app_icon"android:paddingLeft="6dip" android:paddingBottom="6dip" /><TextView android:id="@+id/app_size" android:layout_width="wrap_content"android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall"android:layout_alignParentRight="true" android:layout_below="@+id/app_name"android:paddingRight="6dip" android:maxLines="1" /></RelativeLayout>
更多相关文章
- android导出sqllist数据库要先配置adb.exe加到环境变量里
- Android:ListView数据异步加载、Handler、AsyncTask
- Android ListView组合CheckBox实现多选获取数据
- Android开发学习——android与服务器端数据交互
- Android解析Excel文档完整示例
- android sqlite3 数据库升级,加字段
- android 读取json数据(遍历JSONObject和JSONArray
- Android listView FastScroll 快速查询数据
- 柱状图以及饼图进行数据统计