- 浏览: 597346 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 25405在上一篇文章(Service使用方式)中,介绍了Android ... -
Service使用方式
2011-11-13 15:23 6060使用Service的场合: ... -
在onCreate方法中获取某个View的宽度和高度
2011-10-08 14:54 14475有时候需要在onCreate方法中知道某个View组件的宽度和 ... -
不加载图片,仅仅获取图片文件分辨率
2011-10-08 11:09 3982当从SD卡中获取图片时,如果图片太大,加载会出现溢出异常。因此 ... -
图片移动和缩放
2011-09-29 22:15 2139import android.graphics.Matr ... -
定时任务
2011-09-28 00:53 1522定时任务有执行一次和重复执行两种 public cla ... -
几种创建LayoutInflater对象的方法
2011-09-28 00:51 1884LayoutInflater layoutInflate ... -
判断网络类型及是否有网络
2011-09-28 00:49 2793判断当前是否有可用网络 public boolean ... -
设置全屏
2011-09-26 23:40 19341.编程方式 public void setFullS ... -
dip与px单位之间转换
2011-09-25 10:11 1649//转换dip为px public static in ... -
屏幕尺寸(高、宽)
2011-09-25 10:11 1904Display display = getWindowM ... -
判断手机外存(SD卡)状态
2011-09-25 10:07 2165public int getExternalStorag ... -
SQLite数据类型
2011-09-25 10:03 9358一般数据采用的固 ... -
使用WebView实现腾讯微博OAuth登录
2011-09-24 21:11 4895接着上一篇文章"使用WebView实现新浪微博OAu ... -
使用WebView实现新浪微博OAuth登录
2011-09-20 12:18 8511#新浪官方下载SDK(weibo4android) h ... -
高效率下载图片——防止内存溢出
2011-09-18 13:09 2239在应用中经常需要下载很多的图片,因此,写好图片下载部分的代码非 ... -
PopupWindow使用
2011-09-16 14:05 1828使用PopupWindow来显示一个浮层 点击按钮后弹出 ... -
Android通知
2011-09-07 17:56 1933private void showNotification() ... -
AlarmManager.RTC和ELAPSED_REALTIME的区别
2011-09-04 17:33 30066AlarmManager.RTC,硬件闹钟,不唤醒手机( ... -
开机自启动
2011-09-04 13:55 1655经常会有这样的需求,当手机开机后立刻启动一个服务或者一个活动。 ...
相关推荐
在Android系统中,SD卡是用于扩展设备存储空间的一个重要组成部分,它允许用户存储大量数据,如音乐、图片、视频等。在这个特定的项目中,我们的目标是将SD卡中的MP3文件显示在一个ListView中。ListView是Android UI...
通过以上步骤,我们完成了从`assets`复制SQLite数据库到SD卡、打开数据库以及将数据库内容加载到ListView显示的过程。同时,还介绍了如何对ListView进行排序。在实际应用中,可能还需要处理更多细节,例如错误处理、...
在Android开发中,将SD卡上的数据库数据读取并显示在ListView中是一个常见的需求,尤其在数据量较大、需要分页加载或者缓存数据时。这个过程涉及到Android系统的文件操作、SQLite数据库操作以及UI组件的使用。以下是...
在本案例中,我们将讨论如何将 SQLite 数据库与 ListView 结合,并将数据库存储在 SD 卡上。 首先,我们来看如何在 Android 应用中创建和使用 SQLite 数据库。Android 提供了一个 SQLiteOpenHelper 的抽象类,它...
数据在首次加载时从网络或本地文件读取,并存储到数据库中,后续请求直接从数据库读取。 7. **异步加载**:使用异步加载策略,比如`LoaderManager`或`AsyncTask`,可以在后台线程加载数据,然后通知UI更新,防止...
3. 缓存策略:对于需要加载图片或复杂视图的ListView,可以采用缓存机制,如软引用或LruCache,存储已经加载过的图片或视图,避免重复加载。 4. ListView的滚动监听:通过监听ListView的OnScrollListener,当用户...
同时,可以考虑将图片存储在手机的内部存储或SD卡上。 - **数据库查询缓存**:预先从数据库加载所有数据并缓存,减少后续的数据库查询。 4. **延时加载(懒加载)**: - 当ListView内容过多时,不一次性加载所有...
在Asp.net数据库开发实例中,我们探讨的是如何利用ASP.NET这一强大的Web应用程序框架与数据库进行交互,以创建高效、动态的网站应用。ASP.NET是由微软公司开发的,它为开发者提供了一整套构建高性能、安全性和可伸缩...
1. **存储路径**:Android提供了多种存储文件的方式,包括内部存储、外部存储(公共和私有)以及外部SD卡。内部存储用于应用程序私有的数据,外部存储则允许其他应用访问。使用`getFilesDir()`获取内部存储的私有...
本文将详细介绍两种在Android中通过ListView显示SD卡中文件列表的方法:一种是通过继承`ListActivity`,另一种是利用`BaseAdapter`。 1. **继承ListActivity的方法** 当你选择继承`ListActivity`时,系统会自动将...
2. **文件系统访问**:Android设备上的外部存储(通常是SD卡)可以通过Environment.getExternalStorageDirectory()方法访问。开发者需要权限(READ_EXTERNAL_STORAGE)来读取SD卡上的文件。 3. **ListView与Adapter...
本篇文章将深入解析如何利用Android系统内置的功能来实现这一目标,包括使用SQLite数据库查询SD卡上的MP3文件信息,并展示如何通过编程手段获取这些信息。 ### 一、理解Android中的MediaStore 在Android系统中,`...
9. **权限管理**:考虑到多媒体文件可能涉及到读取存储卡和网络访问,Android应用需要在Manifest.xml中声明相应的权限,如`READ_EXTERNAL_STORAGE`和`INTERNET`。 10. **异步处理**:在处理多媒体文件时,为避免...
在数据库中存储图片有多种方式:直接存储二进制数据、存储图片的URL或文件路径。本系统采用存储二进制数据的方式,可以避免图片文件的物理位置变动导致的链接失效。这通常涉及使用SQL Server的VARBINARY(MAX)或BLOB...
在加载图片的过程中,还要考虑用户体验,如加载动画、错误处理(如网络不佳或图片不存在时)以及加载进度显示。此外,对于大量图片的加载,应考虑分页加载,避免一次性加载过多数据导致性能问题。 总结来说,...
例如,`Environment`类提供了访问外部存储(如SD卡)的方法,`File`类用于文件和目录的操作,如创建、读取、写入和删除。此外,`ContentResolver`和`DocumentsContract`类可用于更高级的文件操作,支持与系统文件...
*EXTERNAL STORAGE (SD 卡)*:Android 中的一种数据存储方式,使用外部存储设备(如 SD 卡)来存储数据。 *SharedPreferences*:Android 中的一种轻量级数据存储方式,用于存储少量的数据。 *DATABASE*:Android 中...
- Android提供了几种文件存储方式:内部存储、外部存储(SD卡)、SQLite数据库和ContentProvider。对于图片,通常使用外部存储,但需注意权限管理。 - 使用`Environment.getExternalStorageDirectory()`获取外部...
Gallery2是一个针对Android平台的开源图片浏览应用,其源码为我们提供了一个深入理解Android系统中图片展示、手势操作以及图片库集成的实例。通过分析这个项目,我们可以学习到许多关于Android开发的重要知识点。 ...
1. **多媒体文件访问**:Android系统允许应用程序访问外部存储(如SD卡)上的文件。首先,你需要在AndroidManifest.xml中申请读取外部存储的权限: ```xml ``` 2. **文件路径获取**:在Android中,可以通过`...