上一章,我实验了关于UI的基本效果,虽然还有很多控件需要二次开发和实验,不过至少说明是可以使用的。有些空间用代码生成确实十分的麻烦。比如,我花了一个晚上才研究明白,ViewList怎么能够用纯代码显示页面。
首先,我们需要声明ListView控件,设置布局和数据源
ListView lv = new ListView(context);
lv.setId(12347);
lv.setDrawSelectorOnTop(false);
lv.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 200));
lv.setBackgroundColor(Color.BLACK);
File f = new File("/");
File[] files = f.listFiles();
ArrayList<HashMap<String, String>> fileInfos = new ArrayList<HashMap<String, String>>();
for (File file : files) {
HashMap<String, String> fileInfo = new HashMap<String, String>();
fileInfo.put("FILE_NAME", file.getName());
fileInfos.add(fileInfo);
}
MyAdapter adapter = new MyAdapter(context, fileInfos,// 数据来源
new String[] { "FILE_NAME" });
lv.setAdapter(adapter);
layout.addView(lv);
需要注意的是LayoutParams和MyAdapter 两个地方
LayoutParams:当用eclipse开发自动生成时,你会发现,有好多同名类,一定要选择正确的,这里需要选择的是:android.widget.LinearLayout,因为ListView 所属容器是LinearLayout类型。
MyAdapter:则是一处需要自行开发的了,虽然Android库中带了好多已实现的Adapter,但是我测试的好多,实现方式都是从资源文件中读取布局信息,这样让之前的努力都白费了,随意这是,只好自己实现了。
由于是测试,方法并没有全部正常的实现,也没有异常处理,仅作为示例使用:
public class MyAdapter extends BaseAdapter {
Context context;
ArrayList<HashMap<String, String>> data;
String[] from;
public MyAdapter(Context context, ArrayList<HashMap<String, String>> data, String[] from) {
this.context = context;
this.data = data;
this.from = from;
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return data.get(position);
}
public long getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
TableLayout lay = null;
if (null == convertView) {
TableRow tr = new TableRow(context);
TextView tv_l = new TextView(context);
TextView tv_l2 = new TextView(context);
tv_l.setText("* ");
tv_l2.setText(data.get(position).get(from[0]));
tv_l2.setGravity(Gravity.LEFT);
tv_l2.setLayoutParams(new TableRow.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
tr.addView(tv_l);
tr.addView(tv_l2, new TableRow.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
lay = new TableLayout(context);
lay.addView(tr);
} else {
lay = (TableLayout) convertView;
}
lay.setColumnStretchable(1, true);
return lay;
}
}
这里自动构建了每一行是一个TableLayout,并包含一个TableRow,TableRow 中才是需要显示的内容,这样可以方便以后的各种布局。
展现效果:
另外提一点的是:Android由于实现了一部分JAVA类库,所以文件访问和Java程序是基本类似的,虽然还没有测试细节的API,但是从读取根目录来看,是完全正常的。
分享到:
相关推荐
android系统并不自带文件管理器,但是很多情况下,我们有诸如从SD中打开文件的需要,就必须借助三方开发的资源管理器,常用的有AndExplorer等。这种情况下发布后,用户还需要安装依赖的软件,非常麻烦。下面介绍在...
本文将深入探讨如何在Android应用中实现一个文件选择器,并提供相关的代码示例。 首先,理解Android的文件系统至关重要。Android使用Linux内核,因此其文件系统遵循典型的Linux目录结构。用户可以通过`Environment`...
本文将详细探讨如何在Android应用程序中实现自动检查并下载新版本的代码逻辑,以达到无缝更新的效果。 首先,我们需要一个服务(Service)来执行后台的更新检查。这个服务会在合适的时机(例如应用启动时或网络连接...
在Android开发领域,经典代码例子是开发者学习和提升技能的重要资源。这些例子涵盖了各种关键功能和组件的实现,有助于深入理解Android应用的工作原理。在这个压缩包中,我们可能找到了多个有关Android编程的示例...
- **Android Drawable Importer**:虽然非代码高亮插件,但能提升Android开发效率,自动导入和优化图片资源。 4. **安装与配置插件**: - Android Studio允许通过内置插件市场安装,`File` -> `Settings` -> `...
本示例着重讲解如何使用JNI结合libzip库来读取压缩文件,同时对比了通过NDK自带的API接口读取assets资源文件的方法。 libzip是一个开源的C库,用于处理ZIP档案,包括读取、创建、更新和提取文件。在Android环境中,...
这个"android简单的画图板实现代码"就是一个适合初学者的示例项目,旨在帮助开发者了解如何在Android环境中实现画图功能。我们将深入探讨这个项目中的关键知识点。 首先,我们需要了解Android图形绘制的基础。在...
这篇教程将详细介绍如何在Android应用中实现读取并显示Word(doc和docx)文件的代码实例。 首先,为了在Android应用中显示Word文档,我们需要一个第三方库来处理Word文件解析。在Java或Kotlin中,常用的库有Apache ...
要实现这一功能,开发者需要理解Android多媒体框架、网络编程以及文件系统操作等多个方面的知识。以下将详细讲解如何在Android应用中实现这一功能。 首先,了解Android多媒体框架至关重要。Android提供了一个强大的...
【标题】"nfcard for Android源代码"是一个专注于Android平台的开源项目,旨在实现读取各地NFC(Near Field Communication)公交卡的功能。这个程序允许用户通过具备NFC功能的Android设备来读取并可能使用公交卡信息...
通过以上步骤,你可以在Android应用中使用JNI和libcurl实现HTTP请求和文件下载。这种方式可以利用C/C++的性能优势,同时避免了在Java层直接操作网络请求可能导致的线程安全问题。在实际项目中,你还可以根据需求扩展...
在Android平台上,实现从网络下载APK文件并自动执行安装是一个常见的需求,尤其在更新应用或者分发非市场应用时。这个过程涉及到多个步骤,包括网络请求、文件下载、权限处理以及安全检查。下面我们将详细讲解如何...
在Android开发中,有时我们需要利用C或C++的性能优势,这时就需要用到Android Studio的NDK(Native Development Kit)来编译C/C++代码,生成SO(Shared Object)动态链接库文件。这篇博客详细介绍了如何在Android ...
"android 文件上传源代码"这个资源提供了一种实现这一功能的方式。在Android应用开发中,文件上传通常涉及到网络编程,特别是HTTP协议的使用,以及与服务器端接口的交互。 首先,我们要理解Android中的文件上传基础...
Android实现圆形、圆角、椭圆自定义ImageView,使用Xfermode渲染模式渲染图形实现的,代码有注释,读起来通俗易懂,有需要的可以下载哈 Android实现圆形、圆角、椭圆自定义ImageView,使用Xfermode渲染模式渲染图形...
这里我们讨论的“Android文件管理器源码”是一个开发资源,可以帮助开发者了解如何在Android平台上构建这样的应用。这个源码可能是某个开源项目,提供了文件管理功能的实现细节,对于学习Android应用开发,尤其是...
这个“Android简单文件浏览器源代码”提供了一个基本的实现,包含了浏览、打开、复制、删除和移动文件的功能。以下是这个源代码中涉及的关键知识点及详细解释: 1. **Android组件和布局**: - `Activity`:Android...
本文将详细讲解如何在Android平台上实现这一功能,包括代码实现和相关注意事项。 首先,静默安装的基本原理是利用Android系统的`PackageInstaller`接口,这个接口允许应用以非交互方式安装APK文件。以下是一段简单...
### Android轻松实现语音识别的完整代码 #### 一、引言 随着移动互联网技术的发展,语音识别成为Android应用开发中的一个重要功能。通过语音识别技术,用户可以方便地通过语音指令来控制应用程序,大大提升了用户...
这个项目就是基于Eclipse这个古老的Android开发工具实现的,而不是使用现在更主流的Android Studio。尽管如此,理解并实现这样一个功能对于Android开发者来说依然非常有价值,因为它涉及到自定义视图、触摸事件处理...