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




学习安卓怎么学?从界面开始。到各种控件到四大金刚,再到各种不同的应用方法和应用方式,却是很容易把自己学晕,怎么办呢?
先理清思路,然后从控件一个一个的开始学起,自从来到达内学习,由于之前的理解都是面对过程对象编程,和现在学习的面对对象编程还是有很大的差别。头一个半月都开始很晕,第二个月后开始慢慢回顾过往的知识,现在慢慢慢慢的回归到正道。慢慢的开始理解了一些概念。
今天我们来探讨下,关于类似于电话通讯录的联系方式的最简单的实现方法,慢慢的用案例的方式来进行学习。
前期的布局我们就不多说了,因为确实不难,大家可以对着布局多练习练习就好了,接下来我们以一个案例来讲讲ArrayAdapter的用法。
在安卓的学习中,我觉得第一道门槛就是我们所说的各种Adapter,当时听老师说了之后,我就晕了好几天,但是关键点还是多练,这点是我们必须做的事情。
【移动开发|我在达内学安卓-基于ArrayAdapter创建单一对象列表方式创建联系人列表!】在做这个案例的时候我们先来分析ArrayAdapter 怎么工作的:
移动开发|我在达内学安卓-基于ArrayAdapter创建单一对象列表方式创建联系人列表!
文章图片


了解清楚相应的工作原理后,我们就开始编写代码。首先我们来编写界面,这里我们来写的是显示数据的总界面,我采用的是Eclipse进行相应的界面编写: 由于默认是相对布局,我个人还是比较喜欢相对布局,所以首先修改为相对布局来进行界面的编写。 最终呈现界面如下:
移动开发|我在达内学安卓-基于ArrayAdapter创建单一对象列表方式创建联系人列表!
文章图片



布局代码如下:
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" >


android:id="@+id/tv_contactList"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="#ffddffdd"
android:gravity="center|center"
android:text="通讯录列表" />








android:id="@+id/lv_showContactList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/tv_contactList"
>










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


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




最终呈现格式如下:
移动开发|我在达内学安卓-基于ArrayAdapter创建单一对象列表方式创建联系人列表!
文章图片

完成了界面设计,我们来进行控件的初始化了,由于主页面中只有一个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 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 adapter =new ArrayAdapter(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();
//填充数据
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");

}


}


最后我们再看看结果,就可以直接在手机上实现单一联系人的效果了,但是这样的效果不太好,为什么呢?我只能通过点进去才能看得到具体的手机电话和相关信息,没有很好的用户体验。 移动开发|我在达内学安卓-基于ArrayAdapter创建单一对象列表方式创建联系人列表!
文章图片




接下来我们会有一篇文章教大家使用simpleAdapter来体验上面姓名,下面电话,左边头像的更好一点的效果。
还有一件小事,大家如果想来达内学习安卓或者其他课程,都可以找我啊,虽然我也是学员,但是只要你用我推荐的来,你还可以减少一点钱,然后我也可以拿点推荐费,何乐而不为,那就赶紧吧,达内还不错,如果想沟通的加我Q:10853913

    推荐阅读