Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android學習--視圖列表(ListView和ListActivity)

android學習--視圖列表(ListView和ListActivity)

編輯:關於Android編程

說明:

視圖列表(ListView和ListActivity)與AutoComplete、Spinner類似,它們都需要一個供顯示的列表項,可以需要借助於內容Adapter提供顯示列表項

創建ListView有兩種方式:

(1)直接使用ListView進行創建

(2)Activity繼承ListActivity


ListView的常用XML屬性

\


<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+z8LD5rfWsfDTw8G91ta3vcq9tLS9qExpc3RWaWV3PC9wPgo8cD4gt73KvdK7o7rWsb3TyrnTw0xpc3RWaWV3vfjQ0LS0vag8L3A+CjxwPqOoMaOpICAgbWFpbl9hY3Rpdml0eS54bWw8YnI+CjwvcD4KPHA+z8LD5rK8vtbBvbj2bGlzdFZpZXejrNK7uPa7+dPayv3X6aOs0ru49rv509pBZGFwdGVyICAgICAgICAgICAgIDxicj4KPC9wPgo8cD48L3A+CjxwcmUgY2xhc3M9"brush:java;">

(2) strings.xml 存放listView1內容數組




    ListView
    Settings
    Hello world!
    
        漢語
        韓語
        英語
        日語
        葡語
        俄語
    



(3) MainActivity.java

步驟:

1、獲取布局ListView

2、封裝顯示內容list或數組

3、構建適配器Adapter

4、給ListView添加適配器

package com.example.listview;

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

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {
	
	private ListView listView2 = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//獲取ListView
		listView2 = (ListView) findViewById(R.id.listView2);
		//定義數組
		String arr[] = new String[]{"中國","韓國","日本","美國","葡萄牙","俄羅斯"};
		//聲明適配器
                //this  上下文
                //android.R.layout.simple_list_item_checked 列表樣式
                //arr  顯示內容 (數組或list集合)
                ArrayAdapter  arrayAdapter = new ArrayAdapter(this, 
				android.R.layout.simple_list_item_checked, arr);
		//listView添加適配器
		listView2.setAdapter(arrayAdapter);
		listView2.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView parent, View view,
					int position, long id) {
				Log.i("listView", parent.getItemAtPosition(position).toString());
				
			}
		});
		
	}
}

運行效果如下:

\

\



如果想要自定義列表,列表項顯示多個組件。我們可以用SimpleAdapter來自定義我們的列表。

(1) main_activity.xml

布局了ImageView,TextView 組件,用於顯示列表內容


     
   
    
        
	    
	     
     


(2)MainActivity.java 步驟與上面的一樣

package com.example.listviews;

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

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

public class MainActivity extends Activity {
	
	private ListView listView = null; //定義ListView組件

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//獲取listView組件
		listView = (ListView) findViewById(R.id.listView);
		//初始化基礎數據
		String name[] = new String[]{"張三","李四","王五","張飛"};
		String phone[] = new String[]{"14313426573","15908263541","18012345678","13423456789"};
		int img [] = new int[]{R.drawable.name01,R.drawable.name02,R.drawable.name03,R.drawable.name04};
		//封裝list集合數據
		List> list = new ArrayList>();
		for(int i=0;i listItem = new HashMap();
			listItem.put("img", img[i]);
			listItem.put("name", name[i]);
			listItem.put("phone", phone[i]);
			list.add(listItem);
		}
		//配置SimpleAdapter適配器
		//this  上下文
		//R.layout.activity_main   布局文件
		//new String[]{"img","name","phone"}    列表內容key
		//new int[]{R.id.img,R.id.name,R.id.phone}  用於顯示內容的布局組件
		SimpleAdapter simpleAdapter = new SimpleAdapter(this, list, R.layout.activity_main,
				new String[]{"img","name","phone"}, new int[]{R.id.img,R.id.name,R.id.phone});
		//添加適配器
		listView.setAdapter(simpleAdapter);
	}

}

運行效果如下:

\



除了SimpleAdapter之外,我們還可以重寫BaseAdapter的getView方法作為列表的列表項 。 有興趣的同學可以動手寫寫BaseAdapter




方式二:Activity繼承ListActivity


注意:

ListActivity的默認布局由一個位於屏幕中心的全屏列表構成。如果你不想使用默認的布局,可以在onCreate()方法中通過setContentView()方法設定你自己的布局。如果指定你自己定制的布局,你的布局中必須包含一個id"@id/android:list"的ListView。 若你還指定了一個id"@id/android:empty"的view,當ListView中沒有數據要顯示時,這個view就會被顯示,同時ListView會被隱藏


(1)main_activity.xml

布局了一個ListView和TextView,TextView的id為@id/android:empty,當ListView中沒有數據要顯示時,這個TextView就會被顯示


    
    
    

(2) MainActivity.java

package com.example.listactivity;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends ListActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		String arr[] = new String[]{"中國","韓國","日本","美國","葡萄牙","俄羅斯"};
		//設置適配器
		ArrayAdapter  arrayAdapter = new ArrayAdapter(this, 
				android.R.layout.simple_list_item_checked, arr);
		//給ListActivity添加適配器
		setListAdapter(arrayAdapter);
	}

	

}


\


如果ListView沒有內容,則顯示TextView。如下





方式一和方式二的效果完全一樣,不同的是,一個給ListView組件添加適配器,一個給ListActivity類添加適配器而已。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved