正在做一个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
本文是Android课程设计的一部分,介绍如何利用ActivityManager获取运行进程,并展示在ListView中。通过创建一个包含refresh按钮和ListView的简单布局,然后在MainActivity中,将进程信息存储到ArrayList,用ArrayAdapter进行适配并显示。
ListViewActivityManagerArrayAdapter学习&spm=1001.2101.3001.5002&articleId=8464080&d=1&t=3&u=74f8c20fd6664d75993b382db284bb50)
3650

被折叠的 条评论
为什么被折叠?



