您的位置:首页 > 移动开发 > Android开发

Android布局之ListView

2015-12-09 21:28 387 查看
ListView无疑是最常用的布局,本文主要介绍ListView的使用。

流程简述:

1)创建ListView布局以及需要显示的子布局。

2)创建所需适配器储存数据,布局,作为LsitView的数据源。

3)绑定ListView并为其加载适配器。

这里给出一个简单的例子:

ListView布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<ListView
android:id="@+id/animal_listView"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>

</LinearLayout>


MainActivity

public class MainActivity extends Activity {

private String[] data={"tiger","panda","elephant","rabbit","penguin","dog","cattle","cat",
"horse","sheep","monkey","bear","wolf","fox","donkey","ferret"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);
ListView listView = (ListView)findViewById(R.id.animal_listView);
listView.setAdapter(adapter);
}
}




ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data)

这句话创建了一个适配器,该适配器包含了子项布局的id和数据源data,this没什么可解释的,通过setAdapter该布局在ListView中显示出来。

PS:是不是感觉少了什么呢?对,子项布局,在上面我们并没有创建啊,这里我们要清楚我们本次调用的是android内置布局,android.R.layout.simple_list_item_1,该布局内部只有一个简单的TextView布局。

——————————————————————————————————————————————————

接下来我们在讲一下利用simpleAdapter和HashMap用来存储并显示键对值,简单的新闻列表就可以这样实现。

子布局:

<?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="wrap_content"
android:orientation="vertical"
android:paddingLeft="10dp">

<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="26sp" />

<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

</LinearLayout>


MainActivity

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建数据存储源
ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
for(int i=1;i<=16;i++){
//生成数据并存入list
HashMap<String,String> map = new HashMap<String,String>();
map.put("title"," 第"+i+"个");
map.put("text", "接下来是第"+(i+1)+"个");
list.add(map);
}
//绑定animal_listView布局
ListView listView = (ListView)findViewById(R.id.animal_listView);
//创建一个SimpleAdapter适配器
SimpleAdapter adapter = new SimpleAdapter(MainActivity.this,
//数据源
list,
//要显示内容的布局
R.layout.item,
//子布局中控件id名与map中键值对应获取数据
new String[]{"title","text"},
//将获取的数据在对应子布局id上显示
new int[]{R.id.title,R.id.text});
listView.setAdapter(adapter);
}
}




这里务必注意SimpleAdapter每个参数的对应

通过上面两个例子,我相信很容易就能明白ListView的简单使用,接下来我们来学习下ListView的自定义用法。

今天写到这里先。。。。。。明天continue

——————————————————————————————————————————————————————————————————————————

这里给出一个SimpleAdapter的详细解析

SimpleAdapter(Context context, List <? extends Map <String, ?>> data, int resource, String[ ] from, int[ ] to)

1.Context context:上下文,这个是每个组件都需要的,它指明了SimpleAdapter关联的View的运行环境,也就是我们当前的Activity。

2.List<? extends Map<String, ?>> data:这是一个由Map组成的List,在该List中的每个条目对应ListView的一行,每一个Map中包含的就是所有在from参数中指定的key。

3.int resource:定义列表项的布局文件的资源ID,该资源文件至少应该包含在to参数中定义的ID。

4.String[] from:将被添加到Map映射上的key。

5.int[] to:将绑定数据的视图的ID跟from参数对应,这些被绑定的视图元素应该全是TextView。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: