Android布局之ListView

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);
    }
}

Android布局之ListView_第1张图片

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);
    }
}

Android布局之ListView_第2张图片

这里务必注意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。


你可能感兴趣的:(android,ListView,Adapter,布局)