Android ListView 自定义 Adapter
2015-06-27 15:32
495 查看
自定义Adapter类
自定义布局文件
调用自定义Adapter方法
public class ListViewAdapter extends BaseAdapter { private static final String TAG = MainActivity.class.getName(); private Context context; // 运行上下文 private List<Map<String, Object>> listItems; // 商品信息集合 private LayoutInflater listContainer; // 视图容器 public final class ListItemView { // 自定义控件集合 public ImageView image_status; public TextView text_storage; public TextView text_device; public TextView text_temperature; public TextView text_humidity; public TextView text_updatetime; } public ListViewAdapter(Context context, List<Map<String, Object>> listItems) { this.context = context; this.listContainer = LayoutInflater.from(this.context); // 创建视图容器并设置上下文 this.listItems = listItems; } @Override public int getCount() { // TODO Auto-generated method stub Log.i(TAG, "getCount:" + listItems.size()); return listItems.size();//获取数量 } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub Log.i(TAG, "getView"); // 自定义视图 ListItemView listItemView = null; if (convertView == null) { listItemView = new ListItemView(); // 获取list_item布局文件的视图 convertView = listContainer.inflate(R.layout.list_item, null); listItemView.image_status = (ImageView) convertView .findViewById(R.id.item_image_status); listItemView.text_storage = (TextView) convertView .findViewById(R.id.item_text_storage); listItemView.text_device = (TextView) convertView .findViewById(R.id.item_text_device); listItemView.text_temperature = (TextView) convertView .findViewById(R.id.item_text_temperature); listItemView.text_humidity = (TextView) convertView .findViewById(R.id.item_text_humidity); listItemView.text_updatetime = (TextView) convertView .findViewById(R.id.item_text_updatetime); // 设置文字和图片 listItemView.image_status.setBackgroundResource((Integer) listItems .get(position).get("image")); listItemView.text_storage.setText((String) listItems.get(position) .get("storage")); listItemView.text_device.setText((String) listItems.get(position) .get("device")); listItemView.text_temperature.setText((String) listItems.get( position).get("temperature")); listItemView.text_humidity.setText((String) listItems.get(position) .get("humidity")); listItemView.text_updatetime.setText((String) listItems.get( position).get("updatetime")); convertView.setTag(listItemView); } else { listItemView = (ListItemView) convertView.getTag(); } return convertView; } }
自定义布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <ImageView android:id="@+id/item_image_status" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/item_text_storage" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/item_text_device" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/item_text_temperature" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/item_text_humidity" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/item_text_updatetime" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
调用自定义Adapter方法
private void initListView() { data_listview = (ListView) findViewById(R.id.data_listview); listItems = getListItems(); listadapter = new ListViewAdapter(this, listItems); Log.i(TAG, "setAdapter"); data_listview.setAdapter(listadapter); } private List<Map<String, Object>> getListItems() { List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>(); for (int i = 0; i < 10; i++) { Map<String, Object> map = new HashMap<String, Object>(); map.put("image", R.drawable.ic_logo); map.put("storage", "仓库"); map.put("device", "设备"); map.put("temperature", "温度"); map.put("humidity", "湿度"); map.put("updatetime", "上传时间"); listItems.add(map); } return listItems; }
相关文章推荐
- Android 1.6-5.0源码下载地址
- Android项目打包
- Android中读取短信信息
- android 三种定位方式
- Android使用聚合数据接口解析JSON数据显示当前地址
- android中bitmap压缩的几种方法的解读
- Android 的log机制
- Android 通知栏Notification学习
- Android 中自定义分享样式弹窗
- Android针对不同屏幕分辨率的4种布局适应方法
- git 简单用法
- Android 让EditText失去焦点避免自动弹出输入法
- 在ubuntu上搭建android开发环境(4)——安装Android Studio
- Android:TextView代码动态设置colors.xml颜色
- Android自定义键盘
- 【第四篇章-android平台MediaCodec】判断是否支持硬解码代码
- 如何给你的Android 安装文件(APK)瘦身
- AndroidのTextView之CompoundDrawable那些坑
- Androidの解决自动旋转导致activity重启问题
- Android英文文档翻译系列(4)——PopupWindow