- 浏览: 591610 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (154)
- java (31)
- Struts (3)
- Hibernate (8)
- Spring (6)
- JS (14)
- DWR (1)
- Oracle (1)
- SQL Server (0)
- JSF (0)
- JPA (0)
- Grails (3)
- Ajax (1)
- Extjs (0)
- jQuery (4)
- MySQL (2)
- 正则表达式 (2)
- 其他 (6)
- 计算机应用 (7)
- Groovy (8)
- Google (1)
- Web (2)
- MongoDB Java Driver (1)
- mongodb (1)
- Linux (3)
- HTML (1)
- Tomcat (3)
- Eclipse (2)
- JSP (1)
- 缓存 (1)
- 动态 (1)
- 问题与解决 (3)
- HY (1)
- Android (35)
- LBS (1)
最新评论
-
u012136165:
list 方法:纠正:[2,5].add(1,9) ...
Groovy的list和map -
bruce.yuan:
误人子弟的文章。已经看到N个人转了这个帖子,这要贻害多少新人啊 ...
理解并解决GBK转UTF-8奇数中文乱码 -
思念-悲伤:
特意登录上来,感谢下!
理解String的compareTo()方法返回值 -
bo_hai:
总结的好,有效。
理解String的compareTo()方法返回值 -
u012678420:
在onCreate方法中获取某个View的宽度和高度
实现下图,图片来自SD卡、数据库、网络图片
定义一个ListView的xml(res/layout/list_view.xml)
<?xml version="1.0" encoding="utf-8"?> <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/h_list_view" android:layout_width="fill_parent" android:layout_height="fill_parent" />
Activity代码
public class MessageListActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
setViews();
}
private void setViews() {
ListView lv = (ListView)findViewById(R.id.h_list_view);
SimpleAdapter adapter = new ImageSimpleAdapter(this, getDatas() ,R.layout.message_list
, new String[]{"icon","title","shortContent"}, new int[]{R.id.ml_icon,R.id.ml_title,R.id.ml_short_content});
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> av, View v, int position, long id) {
//处理列表项的点击事件
}
});
}
private List<Map<String,Object>> getDatas() {
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
for (int i=1; i<=12; i++) {
Map<String,Object> map = new HashMap<String,Object>();
String imagePath = "/sdcard/image_0"+i+".jpg";
if (i >= 10) imagePath = "/sdcard/image_"+i+".jpg";
map.put("icon", BitmapFactory.decodeFile(imagePath));
map.put("title", "My Title "+i);
map.put("shortContent", "my short content "+i);
list.add(map);
}
return list;
}
}
SimpleAdapter中能放置drawable中的图片,如果想放置其它来源的图片(如:SD卡、数据库、网络图片),那么需要重写它的bindView方法,这是个private方法,因此还需要重写所以调用它的方法。
package com.example.adapter; import java.util.List; import java.util.Map; import android.content.Context; import android.graphics.Bitmap; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Checkable; import android.widget.ImageView; import android.widget.SimpleAdapter; import android.widget.TextView; public class ImageSimpleAdapter extends SimpleAdapter { private int[] mTo; private String[] mFrom; private ViewBinder mViewBinder; private List<? extends Map<String, ?>> mData; private int mResource; private int mDropDownResource; private LayoutInflater mInflater; public ImageSimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) { super(context, data, resource, from, to); mTo = to; mFrom = from; mData = data; mResource = mDropDownResource = resource; mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } public View getView(int position, View convertView, ViewGroup parent) { return createViewFromResource(position, convertView, parent, mResource); } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { return createViewFromResource(position, convertView, parent, mDropDownResource); } private View createViewFromResource(int position, View convertView, ViewGroup parent, int resource) { View v; if (convertView == null) { v = mInflater.inflate(resource, parent, false); } else { v = convertView; } bindView(position, v); return v; } private void bindView(int position, View view) { final Map dataSet = mData.get(position); if (dataSet == null) { return; } final ViewBinder binder = mViewBinder; final String[] from = mFrom; final int[] to = mTo; final int count = to.length; for (int i = 0; i < count; i++) { final View v = view.findViewById(to[i]); if (v != null) { final Object data = dataSet.get(from[i]); String text = data == null ? "" : data.toString(); if (text == null) { text = ""; } boolean bound = false; if (binder != null) { bound = binder.setViewValue(v, data, text); } if (!bound) { if (v instanceof Checkable) { if (data instanceof Boolean) { ((Checkable) v).setChecked((Boolean) data); } else if (v instanceof TextView) { // Note: keep the instanceof TextView check at the bottom of these // ifs since a lot of views are TextViews (e.g. CheckBoxes). setViewText((TextView) v, text); } else { throw new IllegalStateException(v.getClass().getName() + " should be bound to a Boolean, not a " + (data == null ? "<unknown type>" : data.getClass())); } } else if (v instanceof TextView) { // Note: keep the instanceof TextView check at the bottom of these // ifs since a lot of views are TextViews (e.g. CheckBoxes). setViewText((TextView) v, text); } else if (v instanceof ImageView) { if (data instanceof Integer) { setViewImage((ImageView) v, (Integer) data); } else if (data instanceof Bitmap) {//仅仅添加这一步 setViewImage((ImageView) v, (Bitmap)data); } else { setViewImage((ImageView) v, text); } } else { throw new IllegalStateException(v.getClass().getName() + " is not a view that can be bounds by this SimpleAdapter"); } } } } } /** * 添加这个方法来处理Bitmap类型参数 * @param v * @param bitmap */ public void setViewImage(ImageView v, Bitmap bitmap) { v.setImageBitmap(bitmap); } }
使用这个类替代SimpleAdapter就可以放SD卡、数据库、网络图片了(先将图片转换成Bitmap)
适配器布局(res/layout/message_list.xml)
<?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"> <ImageView android:id="@+id/ml_icon" android:layout_width="50dp" android:layout_height="58dp" android:src="@drawable/ml_default_image" /> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="58dp" android:layout_weight="1"> <TextView android:id="@+id/ml_title" android:layout_width="fill_parent" android:layout_height="25dp" android:textStyle="bold" android:textSize="20dp" /> <TextView android:id="@+id/ml_short_content" android:layout_width="fill_parent" android:layout_height="35dp" /> </LinearLayout> <TextView android:layout_width="30dp" android:layout_height="58dp" android:text=">" android:textSize="26dp" android:layout_gravity="right" android:gravity="center" /> </LinearLayout>
发表评论
-
深入分析AIDL原理
2011-11-13 16:14 25361在上一篇文章(Service使用方式)中,介绍了Android ... -
Service使用方式
2011-11-13 15:23 6026使用Service的场合: ... -
在onCreate方法中获取某个View的宽度和高度
2011-10-08 14:54 14419有时候需要在onCreate方法中知道某个View组件的宽度和 ... -
不加载图片,仅仅获取图片文件分辨率
2011-10-08 11:09 3928当从SD卡中获取图片时,如果图片太大,加载会出现溢出异常。因此 ... -
图片移动和缩放
2011-09-29 22:15 2105import android.graphics.Matr ... -
定时任务
2011-09-28 00:53 1486定时任务有执行一次和重复执行两种 public cla ... -
几种创建LayoutInflater对象的方法
2011-09-28 00:51 1839LayoutInflater layoutInflate ... -
判断网络类型及是否有网络
2011-09-28 00:49 2740判断当前是否有可用网络 public boolean ... -
设置全屏
2011-09-26 23:40 18901.编程方式 public void setFullS ... -
dip与px单位之间转换
2011-09-25 10:11 1613//转换dip为px public static in ... -
屏幕尺寸(高、宽)
2011-09-25 10:11 1866Display display = getWindowM ... -
判断手机外存(SD卡)状态
2011-09-25 10:07 2137public int getExternalStorag ... -
SQLite数据类型
2011-09-25 10:03 9319一般数据采用的固 ... -
使用WebView实现腾讯微博OAuth登录
2011-09-24 21:11 4852接着上一篇文章"使用WebView实现新浪微博OAu ... -
使用WebView实现新浪微博OAuth登录
2011-09-20 12:18 8468#新浪官方下载SDK(weibo4android) h ... -
高效率下载图片——防止内存溢出
2011-09-18 13:09 2178在应用中经常需要下载很多的图片,因此,写好图片下载部分的代码非 ... -
PopupWindow使用
2011-09-16 14:05 1766使用PopupWindow来显示一个浮层 点击按钮后弹出 ... -
Android通知
2011-09-07 17:56 1888private void showNotification() ... -
AlarmManager.RTC和ELAPSED_REALTIME的区别
2011-09-04 17:33 30033AlarmManager.RTC,硬件闹钟,不唤醒手机( ... -
开机自启动
2011-09-04 13:55 1620经常会有这样的需求,当手机开机后立刻启动一个服务或者一个活动。 ...
相关推荐
从asset复制数据库到Sd卡 并打开数据库 加载数据库内容到Listiew上面显示
主要介绍了Android实现读取SD卡下所有TXT文件名并用listView显示出来的方法,涉及Android针对SD卡的读取及文件遍历等相关操作技巧,需要的朋友可以参考下
|--图片之保存图片至SD卡 |--图片之删除40%最近没有被使用的 |--图片之的本地缓存至SD卡 |--图片之网络异步下载图片 |--图片之获取SD卡所有及边界可调及压缩和软引用和内存回收 |--图片的LRU算法内存保存和读取 |--...
实例074 使ListView控件中的选择项高亮显示 97 实例075 带复选框的ListView控件 99 2.7 TreeView控件应用 100 实例076 将数据库数据显示到树视图中 100 实例077 用TreeView控件制作导航界面 102 实例078 用...
实例074 使ListView控件中的选择项高亮显示 97 实例075 带复选框的ListView控件 99 2.7 TreeView控件应用 100 实例076 将数据库数据显示到树视图中 100 实例077 用TreeView控件制作导航界面 102 实例078 用...
实例074 使ListView控件中的选择项高亮显示 97 实例075 带复选框的ListView控件 99 2.7 TreeView控件应用 100 实例076 将数据库数据显示到树视图中 100 实例077 用TreeView控件制作导航界面 102 实例078 用...
实例074 使ListView控件中的选择项高亮显示 97 实例075 带复选框的ListView控件 99 2.7 TreeView控件应用 100 实例076 将数据库数据显示到树视图中 100 实例077 用TreeView控件制作导航界面 102 实例078 用...