Adapter任务:在数据adapter处理后做。展会上的观点
对于一般ArrayAdapter供。传递给ArrayAdapter之后就能够在视图上用一个列表显示出这个字符串数组。
比例如以下边的代码:
listView.setAdapter(new ArrayAdapter(this,android.R.layout.simple_list_item_1,ls));
可是。比方我们手机的联系人文件夹所看到的。不不过有列表,并且有头像。可能还有手机号码。
所以,单纯的ArrayAdapter是不可以实现这样的复杂的视图的。
我们能够用SimpleAdapter来实现这样的复杂的视图,只是须要设计样式。
我们新建一个Android项目,然后。我们在layout文件夹下定义一个ListView。来存放列表:
main.xml:
> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" > <!-- 定义一个List --> <ListView android:id="@+id/mylist" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
在定义这个之后。我们就能够写java代码了:SimpleAdapterTest.java:
package org.crazyit.ui;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.AdapterView.OnItemSelectedListener;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.TextView;import android.widget.Toast;public class SimpleAdapterTest extends Activity{ private String[] names = new String[] { "虎头", "弄玉", "李清照", "李白"}; private String[] descs = new String[] { "可爱的小孩", "一个擅长音乐的女孩" , "一个擅长的文学的女性", "浪漫主义诗人"}; //这是三张图片的id的集合 private int[] imageIds = new int[] { R.drawable.tiger , R.drawable.nongyu , R.drawable.qingzhao , R.drawable.libai}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 创建一个List集合,List集合的元素是Map List
> parent, View view, int position, long id) { Toast.makeText(getApplicationContext(), names[position]+ "被单击了", 1).show(); } }); list.setOnItemSelectedListener(new OnItemSelectedListener() { // 第position项被选中时激发该方法。 @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(getApplicationContext(), names[position]+ "被选中了", 1).show(); } @Override public void onNothingSelected(AdapterView<?
> parent) { } }); } }
在上边java代码中。创建SimpleAdapter对象的时候,我们用到了一个视图:R.layout.simple_item,这个就是我们自己定义的样式,能够通过这个样式来实现复杂的视图。 simple_item.xml:
--> <ImageView android:id="@+id/header" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="10dp" /> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <!-- 定义一个TextView,用于作为列表项的一部分。
--> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" android:textColor="#f0f" android:paddingLeft="10dp" /> <!-- 定义一个TextView。用于作为列表项的一部分。 --> <TextView android:id="@+id/desc" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="14dp" android:paddingLeft="10dp" /> </LinearLayout> </LinearLayout>
把这些组合起来就能够构成下边的效果:
版权声明:本文博主原创文章,博客,未经同意不得转载。