ListView和上一篇的Spinner比较像,其中的每个item的构造有两种方式,entries属性和适配器两种,方法与Spinner一样,不做重复记录。
但是当每一个item中的内容不为汉字,是复杂样子的话,就只能用适配器,同时新建一个布局文件。
ListView自带适配器
复杂item的简单介绍
···首先在main_activity加入控件
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
···然后新建一个xml文件,作为自己的item
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingTop="10dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/title"/>
···在drawable下面放入几张图片
···看activity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//加入图片,形成数组
int[] imageid=new int[]{R.drawable.boy1,R.drawable.boy2,R.drawable.girl1,R.drawable.girl2,R.drawable.girl3,R.drawable.girl4};
//姓名数组
String[] title=new String[]{"张飞","张吃","张小","张东","张跑","张西"};
//创建list,泛化为一个map
List<Map<String,Object>> listitem=new ArrayList<Map<String,Object>>();
//将每一个头像与姓名对应起来,放入一个Map,在添加到list当中
(* @Param listitem 数据源(一般都是泛型集合))
for(int i=0;i<imageid.length;i++) {
Map<String,Object> map=new HashMap<String,Object>();
map.put("image",imageid[i]);
map.put("name",title[i]);
listitem.add(map);
}
/**创建适配器有·五个参数
*Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to
* @Param MainActivity.this
* @Param listitem 数据源(一般都是泛型集合)
* @Param mian 自定义布局文件
* @Param String数组,数据源键值对的名称
* @Param int数组,自定义布局文件当中对应的ID地址
*/
SimpleAdapter adapter=new SimpleAdapter(MainActivity.this,listitem,
R.layout.mian,new String[]{"name","image"},new int[]{R.id.title,R.id.image});
ListView listView=findViewById(R.id.listView);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
Map<String,Object> map= (Map<String, Object>) adapterView.getItemAtPosition(position);
Toast.makeText(MainActivity.this,map.get("name").toString(),Toast.LENGTH_LONG).show();
}
});
}
}