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>
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>
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每个参数的对应
今天写到这里先。。。。。。明天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。