刚学Android的时候,ListView和ArrayAdapter困扰了我将近两个礼拜的时间,现在自学了两个多月,明白了一些,安卓的大体架构,app的生成有一个差不多的思路,自己跟着书做完了一个项目,留个纪念。这是我的第一篇文章,讲的都是大白话,希望在不久的以后也能成为你们一样的大神级人物,教课写书,也同时鼓励年龄稍大的像我一样快30岁了才学的java(培训班的老师很水,项目都没带,三大框架只讲了三天就完事了,全靠自学…),奋斗吧,为了以后结婚生子给老婆孩子吃好的穿好的,现在孩子补课费太贵了,话有点说太多了哈哈,开始吧我的第一篇,后续会更新listView,现在在上班呢不能码太多。
listView:列表视图,全都是列表,一横格一横格的
Adapter:适配器,用来把数据呈现给你的电脑屏幕(有点太白话了),就好比一个媒婆,就是个中介!没有它的话,俩个事物压根就没联系!
1,创建项目安卓List
2,在res目录中新建list_countries.xml的布局文件。
Step1:
<?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" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
这里给listView设置id,id好比这个控件的名片一样,每个空间都不同,方便以后代码中动态的调用。让列表中的每一项的宽都充满父组件,高度包含内容就行。
3,在MainActivity中修改代码
package com.example.list;
import android.os.Bundle;
import android.app.Activity;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity{
String countries[] = {"中国","日本区","朝鲜","哥伦比亚","摩洛哥","老挝","泰国","柬埔寨","越南省","印度","缅甸","土耳其","沙特","伊朗","哈萨克斯坦","多哥","韩国县","印度尼西亚省"};
ArrayAdapter<String> adapter; // 创建适配器对象
ListView listView1; // 创建列表视图对象,为了寻找上面那个id是listView1的
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_countries);
//寻找id值是listView1,别忘了强制转换
listView1 = (ListView) findViewById(R.id.listView1);
//设置适配器列表和视图之间的关联
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,countries);
//这就关联起来了
listView1.setAdapter(adapter);
}
}
在这里要注意的就是new ArrayAdapter<String>(1,2,3)中的三个参数了,
1是当前上下文的对象,用this即可;
2是列表的样式,这里采用android系统中自带的样式,样式有很多种,这些都是原生的样式,在sdk目录下flatforms/android-xx/data/res/layout目录,下面的内容写一下怎么去自定义listView布局;
3是把数组添加进来就可以了。
把之前的小总结一下:
第一步:创建listView布局,设置listVIew的id
第二部:在Activity中三步大法
1,listView寻找id
2,适配器装入那三个参数
3,将listView和Arradapter关联起来,listView.setArrayAdapter(adpater);
Step2:
看起来不是有点太普通了是吧!这回改变一下listView的界面,改变一下文字大小,颜色,组件高度。
在res目录中创建list_view1_style.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"
android:orientation="vertical" >
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ff33ee"
android:textSize="24sp" />
</LinearLayout>
这里的TextView的所有样式都是为listView中添加的,其实LinearLayout都可以换成TextView。
修改MainActivity中的代码:
package com.example.list;
import android.os.Bundle;
import android.app.Activity;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity{
String countries[] = {"中国","日本区","朝鲜","哥伦比亚","摩洛哥","老挝","泰国","柬埔寨","越南省","印度","缅甸","土耳其","沙特","伊朗","哈萨克斯坦","多哥","韩国县","印度尼西亚省"};
ArrayAdapter<String> adapter;
ListView listView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_countries);
listView1 = (ListView) findViewById(R.id.listView1);
//请注意修改的代码在这里!!!只有这里做了修改
adapter = new ArrayAdapter<String>(this, R.layout.list_view1_style, R.id.textView, countries);
listView1.setAdapter(adapter);
}
}
ArrayAdatper中的四个参数:
1,this不多说了
2,用到了哪个布局文件
3,使用哪个样式的TextView
4,数组对象