正在做一个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); }
源文件:ListView.zip