使用Adapter接口实现ListView.
上次已经介绍过了ArrayAdapter与继承ListActivity实现ListView,接下来说说使用SimpleAdapter实现ListView,SimpleAdapter。
使用Adapter实现ListView无非就是先设置好Adapter然后在调用setAdapter().所以,关键还是如何设计Adapter.
SimpleAdapter:
虽然命名有simple简单的意思,但其实一点都不简单。它的功能十分强大。Android基本的应用场景都可以由它实现。
先是XML:
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
SimpleAdapter有一个构造方法:
SimpleAdapter(Contextcontext, List<? extends Map<String, ?>> data, int resource,String[] from, int[] to)。
所以,下面代码我会以此构造函数来实例化adapter.
Java部分代码:
privateString[] names = new String[]
{"AA", "BB", "CC", "DD"};
privateString[] descs = new String[]
{"aa", "bb", "cc", "dd"};
@Override
public voidonCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 创建一个List集合,List集合的元素是Map
List<Map<String,Object>> listItems =
newArrayList<Map<String, Object>>();
for(int i = 0; i < names.length; i++)
{
Map<String,Object> listItem = new HashMap<String, Object>();
listItem.put("personName",names[i]);
listItem.put("desc",descs[i]);
listItems.add(listItem);
}
// 创建一个SimpleAdapter
SimpleAdaptersimpleAdapter = new SimpleAdapter(this, listItems,
R.layout.simple_item,
new String[] {"personName", "desc"},
newint[] { R.id.name, R.id.desc });
ListViewlist = (ListView) findViewById(R.id.mylist);
// 为ListView设置Adapter
list.setAdapter(simpleAdapter);
上面用到了一个自己写的XML( R.layout.simple_item):
<?xmlversion="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!--定义一个ImageView,用于作为列表项的一部分。-->
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!--定义一个TextView,用于作为列表项的一部分。-->
<TextViewandroid:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
android:textColor="#f0f"
android:paddingLeft="10dp"
/>
<!--定义一个TextView,用于作为列表项的一部分。-->
<TextViewandroid:id="@+id/desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14dp"
android:paddingLeft="10dp"
/>
</LinearLayout>
</
使用Adapter接口实现ListView.
上次已经介绍过了ArrayAdapter与继承ListActivity实现ListView,接下来说说使用SimpleAdapter实现ListView,SimpleAdapter。
使用Adapter实现ListView无非就是先设置好Adapter然后在调用setAdapter().所以,关键还是如何设计Adapter.
SimpleAdapter:
虽然命名有simple简单的意思,但其实一点都不简单。它的功能十分强大。Android基本的应用场景都可以由它实现。
先是XML:
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
SimpleAdapter有一个构造方法:
SimpleAdapter(Contextcontext, List<? extends Map<String, ?>> data, int resource,String[] from, int[] to)。
所以,下面代码我会以此构造函数来实例化adapter.
Java部分代码:
privateString[] names = new String[]
{"AA", "BB", "CC", "DD"};
privateString[] descs = new String[]
{"aa", "bb", "cc", "dd"};
@Override
public voidonCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 创建一个List集合,List集合的元素是Map
List<Map<String,Object>> listItems =
newArrayList<Map<String, Object>>();
for(int i = 0; i < names.length; i++)
{
Map<String,Object> listItem = new HashMap<String, Object>();
listItem.put("personName",names[i]);
listItem.put("desc",descs[i]);
listItems.add(listItem);
}
// 创建一个SimpleAdapter
SimpleAdaptersimpleAdapter = new SimpleAdapter(this, listItems,
R.layout.simple_item,
new String[] {"personName", "desc"},
newint[] { R.id.name, R.id.desc });
ListViewlist = (ListView) findViewById(R.id.mylist);
// 为ListView设置Adapter
list.setAdapter(simpleAdapter);
上面用到了一个自己写的XML( R.layout.simple_item):
<?xmlversion="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!--定义一个ImageView,用于作为列表项的一部分。-->
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!--定义一个TextView,用于作为列表项的一部分。-->
<TextViewandroid:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
android:textColor="#f0f"
android:paddingLeft="10dp"
/>
<!--定义一个TextView,用于作为列表项的一部分。-->
<TextViewandroid:id="@+id/desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14dp"
android:paddingLeft="10dp"
/>
</LinearLayout>
</LinearLayout>
>