安卓工程师入门——ListView

1.适配器的作用

把复杂的数据填充在指定的视图界面上。

ArrayAdapter(数组适配器):绑定简单的数据。
SimpleAdapter(简单适配器):绑定复杂的数据。(一些特定的泛型)

适配器是数据源和视图界面的桥梁。

  建立过程:新建适配器——添加数据源到适配器——视图加载适配器。


2.java源文件的编写

package com.example.demo_shopping;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity {

	
	private ListView listview;                       //1.声明
	private ArrayAdapter<String> arr_adapter;        //2.声明适配器
	private SimpleAdapter sim_adapter;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		listview =(ListView) findViewById(R.id.listview1);  //3.数据与视图的绑定
		String []arr_data = {"百度","谷歌","搜狐","火狐"};        //4.设置数据源
		
		//5.生成适配器    参数:上下文,列表对应的布局文件,数据源
		arr_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, arr_data);
		
		//视图加载适配器
		listview.setAdapter(arr_adapter);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

3.xml视图的编写

<RelativeLayout xmlns: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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    
    <ListView
        android:id="@+id/listview1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
         >
</ListView>

</RelativeLayout>

4.效果展示






5.采用simpleadapter实现图文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" >

    <ImageView
        android:id="@+id/imageview1"
        android:layout_marginTop="200dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="145dp"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/textview1"
        android:layout_marginLeft="145dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="demo"
        android:textColor="#000"
        android:textSize="20dp" />

</LinearLayout>

.java:
package com.example.demo_shopping;

import android.os.Bundle;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity {

	
	private ListView listview;                       //1.声明
	private ArrayAdapter<String> arr_adapter;        //2.声明适配器
	private SimpleAdapter sim_adapter;
	private List<Map<String, Object>>datalist;       //5.数据源声明
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		datalist =new ArrayList<Map<String,Object>>();
		getdata();
		//3.绑定数据
		listview =(ListView) findViewById(R.id.listview1);
		//4.新建一个数据适配器
		//参数介绍      (上下文,数据源:map组成的list的集合map的键必须包含from所指定的键,列表项的布局文件,from中的键,绑定数据视图的id)
		sim_adapter = new SimpleAdapter(this, getdata(), R.layout.layout , new String[]{"imageview1","textview1"}, new int[]{R.id.imageview1,R.id.textview1});
		
	
	
	}

	

	private List<? extends Map<String, ?>> getdata() {
		// TODO Auto-generated method stub
		
		for(int i= 0;i<20;i++){
			Map<String, Object>map = new HashMap<String, Object>();
			map.put("imageview1",R.drawable.ic_launcher);
			map.put("textview1", "百度"+i);
			datalist.add(map);
		}
		return datalist;
	}



	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

自定义的layout:
<RelativeLayout xmlns: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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/listview1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        
    </ListView>
</RelativeLayout>




本博客基于网络课程完成,旨在学习,有错误请指正!
原文地址:https://www.cnblogs.com/comefuture/p/8305979.html