SimpleAdapter是擴展性最好的適配器,可以定義各種你想要的布局,而且使用很方便
SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
參數context:上下文,比如this。關聯SimpleAdapter運行的視圖上下文
參數data:Map列表,列表要顯示的數據,這部分需要自己實現,如例子中的getData(),類型要與上面的一致,每條項目要與from中指定條目一致
參數resource:ListView單項布局文件的Id,這個布局就是你自定義的布局了,你想顯示什么樣子的布局都在這個布局中。這個布局中必須包括了to中定義的控件id
參數 from:一個被添加到Map上關聯每一個項目列名稱的列表,數組里面是列名稱
參數 to:是一個int數組,數組里面的id是自定義布局中各個控件的id,需要與上面的from對應
下面就舉例說明
listview.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" >
<ListView android:id="@+id/listview1" android:layout_width="match_parent" android:layout_height="match_parent"
>
</ListView>
</LinearLayout>
listview_item.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="horizontal" > <ImageView android:id="@+id/touxiang" android:src="@drawable/ic_launcher" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" /> <RelativeLayout android:layout_weight="1" android:layout_height="wrap_content" android:layout_width="0dp" android:layout_margin="10dp" > <TextView android:id="@+id/tv_name" android:textSize="20sp" android:layout_height="wrap_content" android:layout_width="match_parent" android:text="ads" /> <TextView android:id="@+id/tv_message" android:textSize="20sp" android:layout_height="wrap_content" android:layout_width="match_parent" android:layout_below="@id/tv_name" android:text="ads" /> </RelativeLayout> </LinearLayout>
MainActivity.java
public class MainActivity extends Activity { private SimpleAdapter simAdapt; private ListView listView; private List<Map<String, Object>> data = new ArrayList<Map<String, Object>>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listview); for (int i = 0; i < 20; i++) { Map<String, Object> item = new HashMap<String, Object>(); item.put("touxiang", R.drawable.ic_launcher); item.put("name", "某某" + i); item.put("message", "今晚我請客吃飯"); data.add(item); } listView = (ListView) findViewById(R.id.listview1); simAdapt = new SimpleAdapter( this, data, R.layout.listview_item, new String[] { "touxiang", "name", "message" },// 與下面數組元素要一一對應
new int[] { R.id.touxiang, R.id.tv_name, R.id.tv_message }); listView.setAdapter(simAdapt); } }
以上就是ListView 和 SimpleAdapter 的簡單使用