我在达内学安卓-基于ArrayAdapter创建单一对象列表方式创建联系人列表!

来源:互联网 发布:三维地理信息系统软件 编辑:程序博客网 时间:2024/05/26 08:43


学习安卓怎么学?从界面开始。到各种控件到四大金刚,再到各种不同的应用方法和应用方式,却是很容易把自己学晕,怎么办呢?

先理清思路,然后从控件一个一个的开始学起,自从来到达内学习,由于之前的理解都是面对过程对象编程,和现在学习的面对对象编程还是有很大的差别。头一个半月都开始很晕,第二个月后开始慢慢回顾过往的知识,现在慢慢慢慢的回归到正道。慢慢的开始理解了一些概念。

今天我们来探讨下,关于类似于电话通讯录的联系方式的最简单的实现方法,慢慢的用案例的方式来进行学习。

前期的布局我们就不多说了,因为确实不难,大家可以对着布局多练习练习就好了,接下来我们以一个案例来讲讲ArrayAdapter的用法。

在安卓的学习中,我觉得第一道门槛就是我们所说的各种Adapter,当时听老师说了之后,我就晕了好几天,但是关键点还是多练,这点是我们必须做的事情。

在做这个案例的时候我们先来分析ArrayAdapter 怎么工作的:



了解清楚相应的工作原理后,我们就开始编写代码。首先我们来编写界面,这里我们来写的是显示数据的总界面,我采用的是Eclipse进行相应的界面编写:
由于默认是相对布局,我个人还是比较喜欢相对布局,所以首先修改为相对布局来进行界面的编写。
最终呈现界面如下:




布局代码如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.contactlist.MainActivity" >


    <TextView
        android:id="@+id/tv_contactList"
        android:layout_width="match_parent"
        android:layout_height="40dp"
            android:background="#ffddffdd"
        android:gravity="center|center"
        android:text="通讯录列表" />
    <!-- 这里因为注释规则,原因,我们把所有注释卸载下面 为表头设置控件ID名称 -->
    <!-- 设定宽度与父空间相同 -->
    <!-- 设置高度为40dp -->
    <!-- 设置背景颜色为 #ffddffdd -->
    <!-- 设置文本文字 -->
    <!-- 设置文本控件对齐方式 -->


    <ListView
        android:id="@+id/lv_showContactList"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
         android:layout_below="@+id/tv_contactList"
         >
    </ListView>
     <!-- 设置ID为lv_showContactList -->
    <!-- 设置宽度为匹配父控件 -->
    <!-- 设置高度匹配父控件 -->
    <!-- 设置位于TextView下面 -->
    
    
</RelativeLayout>


上面我们就将相应的数据呈现页面就准备完成了。接下来我们还要做一个页面,来呈现我们需要呈现的数据,我们接下来再呈现数据的格式是什么,包括字体颜色和字体格式,我们需要在Layout中新建XML来设置呈现格式,我们只需要新建一个XML文件,再在上面添加一个TextView标签,布局代码如下:
<?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"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/tv_item_show_format"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="姓名" 
        android:textSize="20sp"
        />


</LinearLayout>

最终呈现格式如下:


完成了界面设计,我们来进行控件的初始化了,由于主页面中只有一个ListView 需要进行初始化,我们为了代码显示的完整性考虑,我们把初始化直接用一个单独的方法来实现。后续的代码设计可以参考以下代码:


package com.example.contactlist;


import java.util.ArrayList;
import java.util.List;


import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.ListView;




public class MainActivity extends Activity {
   //初始化contacts变量
private List<String> contacts;
     //定义listview
   private ListView lv_showContactList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//将标题栏从外部去除掉。可以直接从代码中去掉
requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_main);


    //初始化我们的ListView
setViews();
//ListView 填充数据
InitDatasource();
//将contacts数据封装成格式化的数据,以我们定制的数据进行呈现,This代表当前页面,resource 引用相关的Resource,第三列是将数据格式与XML格式对应上,最后是数据源
ArrayAdapter<String> adapter =new ArrayAdapter<String>(this, R.layout.list_item_showtitle, R.id.tv_item_show_format, contacts);
//最后我们将数据显示同步到我们的ListView中,显示相对来说比较简单,采用setAdapter方法
lv_showContactList.setAdapter(adapter);
}

private void setViews() {
      lv_showContactList=(ListView)findViewById(R.id.lv_showContactList);

}
private void InitDatasource() {
//在堆内存中创建出Arraylist对象,并且初始化相关的数据
contacts=new ArrayList<String>();
//填充数据
contacts.add("ammie");
contacts.add("anty");
contacts.add("bou");
contacts.add("betty");
contacts.add("cheman");
contacts.add("cindy");
contacts.add("dalas");
contacts.add("emma");
contacts.add("fancy");
contacts.add("gary");
contacts.add("hancy");
contacts.add("ivy");
contacts.add("imy");
contacts.add("jacy");
contacts.add("kancy");
contacts.add("lancy");
contacts.add("yancy");
contacts.add("zancy");

}


}


最后我们再看看结果,就可以直接在手机上实现单一联系人的效果了,但是这样的效果不太好,为什么呢?我只能通过点进去才能看得到具体的手机电话和相关信息,没有很好的用户体验。




接下来我们会有一篇文章教大家使用simpleAdapter来体验上面姓名,下面电话,左边头像的更好一点的效果。

还有一件小事,大家如果想来达内学习安卓或者其他课程,都可以找我啊,虽然我也是学员,但是只要你用我推荐的来,你还可以减少一点钱,然后我也可以拿点推荐费,何乐而不为,那就赶紧吧,达内还不错,如果想沟通的加我Q:10853913


0 1