Android开发学习笔记(十一)ListView/ActivityManager/ArrayAdapter学习

正在做一个Android的课程设计,主要功能是任务管理器,需要用到ActivityManager,所以就拿这个类来当作ListView的练习了。

本次的任务是将所有正在运行的进程添加到ArrayAdapter适配器,并在ListView中显示出来。


布局文件很简单,只有一个refresh按钮和一个ListView。

activity_main.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"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/myListView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/refresh"
         />
    <Button
        android:id="@id/refresh"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="refresh"
        android:layout_alignParentBottom="true"/>

</RelativeLayout>



主活动MainActivity.java

package com.xujin.listviewtest;

import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.ActivityManager;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity  
{  
  private Button refresh;  
  private ListView proList;  
  private ArrayAdapter<String> arrayAdapter;  
  private ArrayList<String> arrayListPro;  
  private ActivityManager myActivityManager;  

  @Override  
  public void onCreate(Bundle savedInstanceState)  
  {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_main);   
    refresh = (Button)findViewById(R.id.refresh);  
    proList = (ListView)findViewById(R.id.myListView1);  
    
    //获取正在运行的进程的信息并在ListView中显示出来
    getRunningAppProcessInfo();
    
    //为refresh按钮绑定监听器
    refresh.setOnClickListener(new Button.OnClickListener()  
    {  
      @Override  
      public void onClick(View v)  
      {  
    	  getRunningAppProcessInfo();
    	  Toast toast = Toast.makeText(MainActivity.this,"refresh...", Toast.LENGTH_LONG);
		  toast.show();
      }  
    });  

  }
  
  public void getRunningAppProcessInfo(){
	    myActivityManager = (ActivityManager)MainActivity.this.getSystemService(ACTIVITY_SERVICE);  
		arrayListPro = new ArrayList<String>(); 
		List<ActivityManager.RunningAppProcessInfo> mRunningPros = myActivityManager.getRunningAppProcesses();
		int i = 1;
		for (ActivityManager.RunningAppProcessInfo amPro : mRunningPros)
			arrayListPro.add("" + (i++) + ": "+ amPro.processName+ "(ID=" + amPro.pid +")"); 
		arrayAdapter = new ArrayAdapter<String> (MainActivity.this, android.R.layout.simple_list_item_1, arrayListPro); 
		proList.setAdapter(arrayAdapter);
  }  
} 

下面做些许说明:

  private Button refresh;  
  private ListView proList;  
  private ArrayAdapter<String> arrayAdapter;  
  private ArrayList<String> arrayListPro;  //String类型的数组
  private ActivityManager myActivityManager;  


ArrayAdapter(数组适配器)最简单的应用是用于显示一行文本信息。

public ArrayAdapter(Context context,int textViewResourceId,List<T> objects)

第一个参数是上下文,第二个参数是要显示的xml,第三个参数是提供要在xml显示的内容,为一个List<T>类型的数据。

更详细的解释:

public void getRunningAppProcessInfo(){
	    //getSystemService(ACTIVITY_SERVICE)的到系统的服务信息,数据类型是ActivityManager
	    myActivityManager = (ActivityManager)MainActivity.this.getSystemService(ACTIVITY_SERVICE);  
		//新建一个String类型的ArrayList,用来存放数据
	    arrayListPro = new ArrayList<String>(); 
	    //myActivityManager.getRunningAppProcesses()取出的数据类型是List<ActivityManager.RunningAppProcessInfo>的
		List<ActivityManager.RunningAppProcessInfo> mRunningPros = myActivityManager.getRunningAppProcesses();
		int i = 1;
		//顺序枚举每个元素,使用ArrayList<String>类型的add方法添加元素
		for (ActivityManager.RunningAppProcessInfo amPro : mRunningPros)
			arrayListPro.add("" + (i++) + ": "+ amPro.processName+ "(ID=" + amPro.pid +")"); 
		arrayAdapter = new ArrayAdapter<String> (MainActivity.this, android.R.layout.simple_list_item_1, arrayListPro); 
		//用setAdapter()将ListView和Adapter绑定
		proList.setAdapter(arrayAdapter);
  }  



最终效果:

Android开发学习笔记(十一)ListView/ActivityManager/ArrayAdapter学习_第1张图片


源文件:ListView.zip

你可能感兴趣的:(android,android,android,ListView,ListView,ListView,layout,layout)