`
zckai
  • 浏览: 18633 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【转】Android笔记-如何创建列表视图2

阅读更多

上一篇讲到用ArrayAdapter和ListView合作实现列表视图,不过ArrayAdapter的项只是简单的字符串,这一次要现实自定义的类。

    我想做这样一件事情:程序的主界面是一个列表视图,里面的每一项代表一个Activity,当我点击这一项时,就自动运行这个Activty。
    我们修改前面的例子来完成功能:

1.  写一个自定义类,作为ArrayAdapter的项:
MainForm.java
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->    // 运行Activity的必要信息
    class DemoActivityInfo
    {
        
public DemoActivityInfo(Context context, Class<?> cls, int strId)
        {
            mStrId 
= strId;
            mClass 
= cls;
            mContext 
= context;
        }
        
        
public DemoActivityInfo(Context context, Class<?> cls, String desc)
        {
            mDesc 
= desc;
            mClass 
= cls;
            mContext 
= context;
        }
        
        @Override
        
public String toString()
        {
            
// 这个会在列表视图里面显示
            if (mDesc == null)
                mDesc 
= mContext.getString(mStrId);
            
return mDesc;
        }
        
        
public String mDesc;
        
public Class<?> mClass;
        
private int mStrId;
        
private Context mContext;
    }
    该类的几个成员:
    mDesc Activity的描述,从toString()返回,显示在列表视图里。
    mClass 代表要运行的Activity,等下调用startActivity时要用到。
    mStrId 资源ID,允许描述定义在资源文件里,然后通过Context.getString(resId)取回字符串。
    mContext 环境类

2.  修改MainForm的onCreate函数:
MainForm.java
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->    @Override
    
public void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        
// 取得ListView
        mListView = (ListView)findViewById(R.id.listview_main);
        
// 创建一个ArrayAdapter
        ArrayAdapter<DemoActivityInfo> uiDemoList = 
            
new ArrayAdapter<DemoActivityInfo>(this, R.layout.textview_item, mDemoList);
        mListView.setAdapter(uiDemoList);
        
// 使ListView支持过滤搜索
        mListView.setTextFilterEnabled(true);
        
// 设置事件
        mListView.setOnItemClickListener(mItemClickListenter);
    } 
    主要是修改ArrayAdapter的类型参数,变成DemoActivityInfo,这一变mDemoList的类型也要跟着变了:
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->    private DemoActivityInfo [] mDemoList = 
    {
        
new DemoActivityInfo(this, CheckListView.class, R.string.clv_title)
    }; 
    我们以后有新的Activity只需要往后面增加就行了。

3.  修改项点击事件,改变运行一个Activity:
代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->    private OnItemClickListener mItemClickListenter = new OnItemClickListener()
    {
        @Override
        
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
        {
            
// 运行Activity
            startActivity(new Intent(MainFrom.this
                    MainFrom.
this.mDemoList[position].mClass));
        }
    };

 

4.  我们完成了MainForm的修改,但还需要增加一些东西,比如:
    new DemoActivityInfo(this, CheckListView.class, R.string.clv_title)
    里面的R.string.clv_title,这是一个字符串资源,增加起来很简单,在res/values/strings.xml直接增加就可以了:
strings.xml
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->    <?xml version="1.0" encoding="utf-8"?>
    
<resources>
        
<string name="hello">Hello World, MainFrom!</string>
        
<string name="app_name">界面测试工程</string>
        
<string name="clv_title">带有复选框的列表视图</string>
    
</resources>

 

    我们还得增加CheckListView这个Activity,这稍微有点烦琐,但并不麻烦:
    *.  先增加一个layout文件,前面已经讲过如何增加,不再描述,只给出文件内容:
checklistview.xml
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->       <?xml version="1.0" encoding="utf-8"?>
       
<ListView
         
xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width
="fill_parent"
         android:layout_height
="fill_parent">
       
</ListView>

 

    *.  新建一个类:
        *.  右键src选择New/Class
        *.  在弹出来的对话框中输入下面的信息:
            Package处输入包名,我这里是: colin.demo
            Name处输入类名:CheckListView
            SuperClass处输入父类,点旁边的Browser可以快速搜索父类:android.app.Activity
            最后点击Finish完成。
        *.  完成后就多了一个CheckListView类,我们覆盖它的onCreate方法,把刚才增加的Layout设进来:
CheckListView.java
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->            package colin.demo;

            
import android.app.Activity;
            
import android.os.Bundle;

            
public class CheckListView extends Activity
            {
                @Override
                
protected void onCreate(Bundle savedInstanceState)
                {
                    
super.onCreate(savedInstanceState);
                    setContentView(R.layout.checklistview);
                }
            }

         

        *.  最后一步,把这个Activity类加到AndroidManifest.xml里面
            由于该类是内部使用,因此不需要Intent-filter,所以可以写得比较简单:
            在manifest/application元素下面,增加一个Activity子元素,
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->           <activity android:name=".CheckListView"
                     android:label
="@string/clv_title">
           
</activity>

 

5.  经过上面的努力,应该可以运行看一下效果了:
    
    

    上图看到CheckListView只是一个空白的界面,从它的名字看来,是要做一个带有复选框的列表视图了,这是下一篇的主题,敬请期待!
分享到:
评论

相关推荐

    pocket-note-android-口袋笔记-- 一个简单的记事本app.zip

    口袋笔记-- 一个简单的记事本app,具有多色彩主题,自带日历视图,记事可以是列表显示也可以是网格显示,提醒功能,隐私保护功能等。项目地址:https://github.com/channguyen/pocket-note-android 效果图: 

    Android开发笔记---ListView

    在Android开发中,ListView是一个非常重要的组件,常用于展示大量数据列表。这篇开发笔记将深入讲解如何使用ListView以及其中的一些关键知识点。 首先,ListView的工作原理是通过Adapter来连接数据源和视图。当我们...

    Android自学笔记-11-listview简单例子

    本自学笔记将重点讲解如何在Android项目中创建并使用ListView,包括基本的设置、数据绑定和适配器的使用。 首先,我们需要在布局文件中添加ListView元素。在XML布局文件中,通过`&lt;ListView&gt;`标签定义ListView,可以...

    android studio实现笔记本

    - **用户界面**: 使用Android Studio的布局编辑器设计用户界面,包括输入框、按钮和列表视图等。 - **事件监听**: 为UI元素设置监听器,响应用户的操作,如点击按钮保存笔记。 - **Intent**: Android系统中的消息...

    新版Android开发教程及笔记-完整版

    6. UI设计和组件:Android平台提供了丰富的UI组件,如按钮、文本框、列表视图等,开发者可以利用这些组件创建直观、易用的用户界面。 7. 应用开发实践:通过实例演示和样例代码,教程将教授如何开发一个Android应用...

    Android-笔记一款以sqlitedatabase为数据库采用MVP架构的轻便易用的笔记app

    除了核心的MVP架构,此应用还会用到Android的一些关键组件,例如`Activity`作为应用程序的主要入口点,`Intent`用于启动其他组件或传递数据,`RecyclerView`用于显示笔记列表,`Adapter`将数据绑定到列表视图,`...

    Android--NoteBook

    同时,可能还用到了EditText用于输入笔记内容,Button用于触发操作,RecyclerView或者ListView用于显示笔记列表。通过适配器(Adapter)将数据与视图绑定,可以动态加载和更新列表内容。 此外,事件监听和回调机制...

    Android学习笔记九:基本视图组件:Spinner

    在Android开发中,Spinner是一个非常重要的基本视图组件,它为用户提供了一个下拉选择菜单,通常用于展示一组有限的选项。本篇学习笔记将深入探讨Spinner的使用、工作原理以及如何自定义它来满足特定需求。 一、...

    android笔记本

    2. **插入数据**:使用SQLiteDatabase对象的insert()方法,将用户的笔记保存到数据库中。例如: ```java public void insertDiary(String title, String content, String date) { SQLiteDatabase db = this....

    基于Android Studio开发的笔记APP.rar

    使用Android Studio内置的布局编辑器(XML)设计笔记APP的用户界面,通常包括主界面、笔记列表视图、笔记详情视图以及添加/编辑笔记的界面。可以利用RecyclerView展示笔记列表,EditText用于输入笔记内容,Button...

    Android记事本-demo

    在这个demo中,可能会看到如何在ListView中显示SQLite数据库中的笔记列表,包括设置适配器,处理点击事件等。 在这个"Android记事本-demo"中,开发者可能还会涉及到UI设计,使用XML布局文件创建界面,以及使用...

    material design android模板-PSD

    6. `Android_L_Notes.psd`:代表笔记应用的设计,可能包含笔记列表、新建笔记的界面,以及编辑和查看笔记的功能。 7. `Android_L_Travel.psd`:可能是一个旅行相关的界面,如行程规划、目的地介绍等,可能包含地图...

    新版Android开发教程+笔记七--基础UI编程1

    标题和描述提及了“新版Android开发教程+笔记七--基础UI编程1”,以及“安卓开发必备”,因此本篇内容将主要围绕Android基础UI编程展开。 Android UI编程是构建Android应用界面的核心部分。它涉及到使用各种布局和...

    新版Android开发教程 笔记7--基础UI编程1

    当需要在一个视图中展示列表数据时,适配器起着桥梁作用,它将数据集转换成可显示的视图列表,如ListView、RecyclerView等。适配器可以是ArrayAdapter、CursorAdapter等,它们根据不同的数据源来填充视图。 9. **...

    新版Android开发教程 笔记8--基础UI编程2

    Adapter负责将数据源(如数组或数据库查询结果)转换为视图列表,这样用户就能在界面上滚动查看和交互。适配器模式使得数据更新和界面显示保持解耦,提高了代码的灵活性和可复用性。 此外,Android提供了丰富的动画...

    新版Android开发教程 笔记11--可视化UI设计DroidDraw

    首先,DroidDraw提供了丰富的预定义组件,如按钮、文本框、图像视图、列表视图等,这些都是构建Android应用界面的基本元素。开发者可以通过选择这些组件,直接在设计画布上放置,省去了手动编写布局XML的繁琐步骤。 ...

    Android开发笔记

    同时,这份笔记可能还会涵盖如何使用Adapter来连接数据源和ListView、RecyclerView等列表视图,实现数据的动态加载和滚动效果。 最后,"新版Android开发教程&笔记四--Dalvik ADB.pdf"讲解了Dalvik虚拟机和Android ...

    Android开发教程笔记完全版 pdf

    Android提供了丰富的UI组件,如按钮(Button)、文本框(EditText)、列表视图(ListView)、网格视图(GridView)等。通过组合这些组件,开发者可以创建出复杂的用户交互。 六、事件处理 Android使用监听器...

    Android代码-Knote

    【Android代码-Knote】是关于开发一款名为Knote的简单Android笔记应用的源代码库。这个项目主要关注Android平台上的应用程序开发,旨在提供一个轻量级、用户友好的笔记工具。下面将详细介绍在这个项目中涉及的...

    Android-一个仿照印象笔记的TimeBar.rar

    2. **时间轴视图(TimeBar)**:实现TimeBar需要理解Android的View和ViewGroup,可能用到了自定义View或者自定义ViewGroup来创建时间轴效果,涉及到绘图操作,如使用Canvas和Paint类。 3. **数据结构**:为了存储和...

Global site tag (gtag.js) - Google Analytics